第一个OPENGL例子

简介: #define GLUT_DISABLE_ATEXIT_HACK#include #include #include #include #include void init();void CALLBACK reshape(GLsizei w,GLsizei h);void CALLBACK di...

#define GLUT_DISABLE_ATEXIT_HACK
#include <Windows.h>
#include <math.h>
#include <gl/GL.h>
#include <gl/GLU.h>
#include <gl/GLAux.h>

void init();
void CALLBACK reshape(GLsizei w,GLsizei h);
void CALLBACK display();
GLfloat s,h;

void CALLBACK display()
{
 glClearColor(1,1,1,1);
 glClear(GL_COLOR_BUFFER_BIT);
 glLoadIdentity();
 gluLookAt(5,5,h,s,0,0,0,1,0);
 glColor3f(0,0,0);
 GLfloat RAD=0.07145;
 GLfloat x,y,z,r;
 int i,j;
 for (i=0;i<180;i+=5)
 {
  glBegin(GL_LINE_LOOP);
  r=2*sin(i*RAD);
  z=2*cos(i*RAD);
  for (j=0;j<360;j+=10)
  {
   x=r*cos(j*RAD);
   y=r*sin(j*RAD);
   glVertex3f(x,y,z);
  }
  glEnd();
 }
 for (j=0;j<360;j+=10)
 {
  glBegin(GL_LINE_LOOP);
    for (i=0;j<=180;i+=10)
    {
     r=2*sin(i*RAD);
     z=2*cos(i*RAD);
     x=2*cos(i*RAD);
     y=2*sin(i*RAD);
     glVertex3f(x,y,z);
    }
       glEnd();
 }
 glFlush();
}

void init()
{
 glShadeModel(GL_FLAT);
 s=0;
 h=5;
}

void CALLBACK reshape(GLsizei w,GLsizei h)
{
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 gluPerspective(30,1,-3,3);
 glMatrixMode(GL_MODELVIEW);
 glViewport(0,0,w,h);
}

void CALLBACK Left()
{
 s+=0.1;
}

void CALLBACK Right()
{
 s-=0.1;
}

void CALLBACK Up()
{
 h-=0.1;
}

void CALLBACK Down()
{
 h+=0.1;
}

void main()
{
 auxInitDisplayMode(AUX_SINGLE|AUX_RGB);
 auxInitPosition(0,0,300,300);
 auxInitWindow(TEXT("OpenGL Demo"));
 init();
 auxKeyFunc(AUX_LEFT,Left);
 auxKeyFunc(AUX_RIGHT,Right);
 auxKeyFunc(AUX_UP,Up);
 auxKeyFunc(AUX_DOWN,Down);
 auxReshapeFunc(reshape);
 auxMainLoop(display);
}

相关文章
|
8月前
QT4.7版本的OPENGL的3D旋转模型例子
QT4.7版本的OPENGL的3D旋转模型例子
142 0
|
存储 编译器 C++
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
关于“VS2022无法打开头文件<graphics.h>” 以及编译时 “没有与参数列表匹配的重载函数实例”俩个问题的解决思路
2927 0
|
2月前
|
自然语言处理
ES6 中箭头函数和普通函数区别
【10月更文挑战第19天】这些仅是对箭头函数和普通函数区别的一些主要方面进行的详细阐述,实际应用中可能还会有更多具体的细节和情况需要进一步探讨和理解。可以根据自己的需求进一步深入研究和实践,以更好地掌握它们在不同场景下的应用。
40 2
|
4月前
|
JavaScript 前端开发
用JavaScript编程定义二维数组并初始化,然后输出元素值
用JavaScript编程定义二维数组并初始化,然后输出元素值
|
算法 Ubuntu Linux
适用于OpenGL离屏渲染上下文的初始化代码
说明 最近做图像算法,需要用到shader对图像进行处理,用glut会有窗口,不适合写成UT测试用例,需要创建一个无窗口的OpenGL上下文。 代码 这部分代码其实是参考 Android的Skia 模块相关代码写的,适用于 Mac、EGL(Android)、X11(Ubuntu等Linux系统)平台。 h文件 class GLContext { publ
5442 0
|
8月前
|
JavaScript 前端开发
请解释JavaScript中的箭头函数,并给出一个使用箭头函数的例子。
请解释JavaScript中的箭头函数,并给出一个使用箭头函数的例子。
59 0
|
编译器 C语言 C++
OpenGL学习笔记(十一):封装自己的着色器类
OpenGL学习笔记(十一):封装自己的着色器类
OpenGL学习笔记(十一):封装自己的着色器类
|
算法 Android开发 数据安全/隐私保护
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
511 0
【Android 逆向】IDA 工具使用 ( 函数窗口 Function window | 创建引用图 Xrefs graph to | 创建调用图 Xrefs graph from )
【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★(二)
【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★(二)
202 0
【OpenGL】八、初始化 OpenGL 渲染环境 ( 导入 OpenGL 头文件 | 链接 OpenGL 库 | 将窗口设置为 OpenGL 窗口 | 设置像素格式描述符 | 渲染绘制 ) ★(二)