1.使用工具
Code::Blocks
2.网格立方体的创建
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT );
glColor3f(1.0f, 0.0f, 0.0f);
glLoadIdentity();//初始化
glRotatef(angle, 1,1,1);
glutWireCube(0.5);
glFlush();
}
这是正视图,看着像2D。
其实还有很多形状
void glutWireSphere(GLdouble radius, GLint slices, GLint stacks); //网状球
void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks); //实心球
void glutWireCube(GLdouble size); //网状立方体
void glutSolidCube(GLdouble size); //实心立方体
void glutWireTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); //网状圆环
void glutSolidTorus(GLdouble innerRadius, GLdouble outerRadius, GLint nsides, GLint rings); //实心圆环
void glutWireCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); //网状圆锥体
void glutSolidCone(GLdouble radius, GLdouble height, GLint slices, GLint stacks); //实心圆锥体
void glutWireTeapot(GLdouble size); //网状茶壶
void glutSolidTeapot(GLdouble size); //实心茶壶
3.立方体旋转
何为动画?就是不断地清除,刷新。
在OpenGL中:
glutIdleFunc() // 不断刷新的函数,可以理解为游戏引擎中的 update()
好了,给出代码:
#include <windows.h>
#include <GL/glut.h>
// 显示函数
void display(void);
void myAnim(void);
// 定义角度
float angle = 0.0f;
// 主函数
int main(int argc, char** argv)
{
glutInit(&argc, argv); // 初始化
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(400, 100); // 窗口位置
glutInitWindowSize(400, 400);
glutCreateWindow("KUOKUO"); // 标题
glutDisplayFunc(&display);
// 不断调用显示函数,达到动画效果
glutIdleFunc(&myAnim); // 调用函数来绘制
glutMainLoop(); // 启动消息循环
return 0;
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT );
glColor3f(1.0f, 0.0f, 0.0f);
glLoadIdentity();//初始化
glRotatef(angle, 1,1,1);//沿着3轴旋转一次
glutWireCube(0.5);
glFlush();
}
void myAnim(void)
{
angle += 0.1f;
if (angle > 360) {
angle = 0.0f;
}
display();
}
实现效果
O(∩_∩)O~~