用opengl绘制一个旋转正方体.cpp下载
#include <stdio.h>
#include "stdafx.h"
#define GLUT_DISABLE_ATEXIT_HACK
#include <gl/glut.h>
//#pragma comment(lib, "glut32.lib")
GLfloat AngleX;//旋转向量
GLfloat AngleY;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //这个函数其实就是对接下来要做什么进行一下声明 GL_MODELVIEW 模型视图
glLoadIdentity();
glPushMatrix();// 提供了相应的接口
{
glRotatef(AngleX, 1.0f, 0.0f, 0.0f);
glRotatef(AngleY, 0.0f, 1.0f, 0.0f);
glBegin(GL_POLYGON); //前表面
glColor3f(1.0f,1.0f,1.0f);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3f(1.0f,1.0f,0.0f);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glColor3f(1.0f,0.0f,0.0f);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(1.0f,0.0f,1.0f);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //后表面
glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 1.0f);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glEnd();
glBegin(GL_POLYGON); //右表面
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)255);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //左表面
glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)0, (GLubyte)0);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(1.0f, 0.0f, 1.0f);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //上表面
glColor3d(0.0, 1.0, 1.0);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3d(1.0, 1.0, 1.0);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3d(1.0, 0.0, 1.0);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glEnd();
glBegin(GL_POLYGON); //下表面
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glColor3f(1.0f, 0.0f, 0.0f);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glEnd();
}
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w, int h)
{
GLfloat aspect = (GLfloat)w / (GLfloat)h;
GLfloat nRange = 100.0f;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION); //将当前矩阵指定为投影模式
glLoadIdentity();
//设置三维投影区
if (w <= h)
{
glOrtho(-nRange, nRange, -nRange * aspect, nRange * aspect, -nRange, nRange);
}
else
{
glOrtho(-nRange, nRange, -nRange / aspect, nRange / aspect, -nRange, nRange);
}
}
void key_board(GLint key, GLint x, GLint y)//上下左右按键分别对应于
{
if (key == GLUT_KEY_UP)
{
AngleX -= 5.0f;
}
if (key == GLUT_KEY_DOWN)
{
AngleX += 5.0f;
}
if (key == GLUT_KEY_LEFT)
{
AngleY -= 5.0f;
}
if (key == GLUT_KEY_RIGHT)
{
AngleY += 5.0f;
}
if (AngleX > 355.0f)
{
AngleX = 0.0f;
}
if (AngleX < 0.0f)
{
AngleX = 355.0f;
}
if (AngleY > 355.0f)
AngleY = 0.0f;
if (AngleY < 0.0f)
{
AngleY = 355.0f;
}
glutPostRedisplay();
}
void init()
{
AngleX = 45.0f;
AngleY = 315.0f;
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glEnable(GL_DEPTH_TEST); //初始化OpenGL
glEnable(GL_DITHER); //抖动是激活的。
glShadeModel(GL_SMOOTH);//两点间颜色有过渡效果
}
void main(int argc, char* argv[])
{
glutInit(&argc;, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); //使用双缓存 使用深度缓存。
glutInitWindowSize(480, 480);
glutCreateWindow("OpenGL颜色立方体");
glutReshapeFunc(reshape); //窗口改变的时候调用的函数
glutDisplayFunc(display);
glutSpecialFunc(key_board); //函数注册鼠标响应事件
init();
glutMainLoop();
}
相关下载链接://download.csdn.net/download/qq_42262433/10428150?utm_source=bbsseo
#include "stdafx.h"
#define GLUT_DISABLE_ATEXIT_HACK
#include <gl/glut.h>
//#pragma comment(lib, "glut32.lib")
GLfloat AngleX;//旋转向量
GLfloat AngleY;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW); //这个函数其实就是对接下来要做什么进行一下声明 GL_MODELVIEW 模型视图
glLoadIdentity();
glPushMatrix();// 提供了相应的接口
{
glRotatef(AngleX, 1.0f, 0.0f, 0.0f);
glRotatef(AngleY, 0.0f, 1.0f, 0.0f);
glBegin(GL_POLYGON); //前表面
glColor3f(1.0f,1.0f,1.0f);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3f(1.0f,1.0f,0.0f);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glColor3f(1.0f,0.0f,0.0f);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(1.0f,0.0f,1.0f);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //后表面
glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 1.0f);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glEnd();
glBegin(GL_POLYGON); //右表面
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)255);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3f(0.0f, 1.0f, 1.0f);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //左表面
glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)0, (GLubyte)0);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(1.0f, 0.0f, 1.0f);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glEnd();
glBegin(GL_POLYGON); //上表面
glColor3d(0.0, 1.0, 1.0);//颜色设置为青色
glVertex3f(50.0f, 50.0f, -50.0f);
glColor3d(1.0, 1.0, 1.0);//颜色设置为白色
glVertex3f(50.0f, 50.0f, 50.0f);
glColor3d(1.0, 0.0, 1.0);//颜色设置为品红色
glVertex3f(-50.0f, 50.0f, 50.0f);
glColor3d(0.0, 0.0, 1.0);//颜色设置为蓝色
glVertex3f(-50.0f, 50.0f, -50.0f);
glEnd();
glBegin(GL_POLYGON); //下表面
glColor3f(0.0f, 1.0f, 0.0f);//颜色设置为绿色
glVertex3f(50.0f, -50.0f, -50.0f);
glColor3ub((GLubyte)255, (GLubyte)255, (GLubyte)0);//颜色设置为黄色
glVertex3f(50.0f, -50.0f, 50.0f);
glColor3f(1.0f, 0.0f, 0.0f);//颜色设置为红色
glVertex3f(-50.0f, -50.0f, 50.0f);
glColor3f(0.0f, 0.0f, 0.0f);//颜色设置为黑色
glVertex3f(-50.0f, -50.0f, -50.0f);
glEnd();
}
glPopMatrix();
glutSwapBuffers();
}
void reshape(int w, int h)
{
GLfloat aspect = (GLfloat)w / (GLfloat)h;
GLfloat nRange = 100.0f;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION); //将当前矩阵指定为投影模式
glLoadIdentity();
//设置三维投影区
if (w <= h)
{
glOrtho(-nRange, nRange, -nRange * aspect, nRange * aspect, -nRange, nRange);
}
else
{
glOrtho(-nRange, nRange, -nRange / aspect, nRange / aspect, -nRange, nRange);
}
}
void key_board(GLint key, GLint x, GLint y)//上下左右按键分别对应于
{
if (key == GLUT_KEY_UP)
{
AngleX -= 5.0f;
}
if (key == GLUT_KEY_DOWN)
{
AngleX += 5.0f;
}
if (key == GLUT_KEY_LEFT)
{
AngleY -= 5.0f;
}
if (key == GLUT_KEY_RIGHT)
{
AngleY += 5.0f;
}
if (AngleX > 355.0f)
{
AngleX = 0.0f;
}
if (AngleX < 0.0f)
{
AngleX = 355.0f;
}
if (AngleY > 355.0f)
AngleY = 0.0f;
if (AngleY < 0.0f)
{
AngleY = 355.0f;
}
glutPostRedisplay();
}
void init()
{
AngleX = 45.0f;
AngleY = 315.0f;
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glEnable(GL_DEPTH_TEST); //初始化OpenGL
glEnable(GL_DITHER); //抖动是激活的。
glShadeModel(GL_SMOOTH);//两点间颜色有过渡效果
}
void main(int argc, char* argv[])
{
glutInit(&argc;, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); //使用双缓存 使用深度缓存。
glutInitWindowSize(480, 480);
glutCreateWindow("OpenGL颜色立方体");
glutReshapeFunc(reshape); //窗口改变的时候调用的函数
glutDisplayFunc(display);
glutSpecialFunc(key_board); //函数注册鼠标响应事件
init();
glutMainLoop();
}
相关下载链接://download.csdn.net/download/qq_42262433/10428150?utm_source=bbsseo
...全文
相关推荐
OpenGL绘制旋转的正方体
本示例“OpenGL绘制旋转的正方体”旨在帮助初学者掌握如何使用OpenGL来实现一个动态的3D场景,其中正方体会根据用户的键盘输入进行旋转和颜色变换。首先,理解OpenGL的基础是必要的。
用opengl绘制一个旋转正方体.cpp
#include <stdio.h> #include "stdafx.h"#define GLUT_DISABLE_ATEXIT_HACK #include <gl/glut.h> //#pr
C++MFC实现的绘制正方体的三视图
源代码文件可能包括主窗口类的实现,其中包含绘制正方体的逻辑。通过阅读和分析这些文件,可以进一步了解MFC是如何与OpenGL或其他图形库结合,实现三维图形的绘制和交互的。
Qt下Opengl纹理映射实例:正方体(可拖动旋转)
在这个正方体示例中,`paintGL()`函数会绘制一个可以旋转的正方体。正方体的每个面都有一个对应的纹理坐标,这些坐标会在顶点数组中定义。
基于OpengL与MFC对话框Picture控件绘制的旋转正方体
该项目利用MFC框架与OpenGL技术,在对话框的Picture控件上实现三维旋转正方体的实时渲染。通过设置设备上下文和像素格式,建立OpenGL渲染环境,并结合定时器驱动视角连续旋转,展示了基础的图


下载资源悬赏专区
