#ifndef GLUT_DISABLE_ATEXIT_HACK #define GLUT_DISABLE_ATEXIT_HACK #endif #define GLEW_STATIC #include <GL/glew.h> #include <GL/wglew.h> #include <GL/freeglut.h> #include <vector> #include <glm/glm.hpp> #include <glm/gtc/matrix_transform.hpp> //for matrices #include <glm/gtc/type_ptr.hpp> //undefine if u want to use the default bending constraint of pbd #include<iostream> using namespace std; GLfloat rtx = 0.0f, rty = 0.0f, rtz = 0.0; GLfloat step = 0.1; //float exp1 = 1e-3; void init() { glLoadIdentity(); } // float rquad = 0; void move(){ rquad += step; if(rquad>360)rquad = 0; } void draw(void) { move(); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); printf("%lf\n",rquad); glPushMatrix(); glTranslatef(rtx, rty, rtz); glRotatef(rquad,1.0f,1.0f,1.0f); glScalef(0.3, 0.3, 0.3); glBegin(GL_QUADS); glColor3f(1, 0, 0); glVertex3f(-1.0f, -1.0f, 1.0f);// 前 glColor3f(0, 1, 0); glVertex3f(1.0f, -1.0f, 1.0f); glColor3f(0, 0, 1); glVertex3f(1.0f, 1.0f, 1.0f); glColor3f(0, 1, 1); glVertex3f(-1.0f, 1.0f, 1.0f); glColor3f(1, 0, 0); glVertex3f(-1.0f, -1.0f, -1.0f);// 后 glVertex3f(-1.0f, 1.0f, -1.0f); glVertex3f(1.0f, 1.0f, -1.0f); glVertex3f(1.0f, -1.0f, -1.0f); glColor3f(0, 1, 0); glVertex3f(-1.0f, 1.0f, -1.0f);// 上 glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(1.0f, 1.0f, -1.0f); glColor3f(0, 0, 1); glVertex3f(-1.0f, -1.0f, -1.0f);// 下 glVertex3f(1.0f, -1.0f, -1.0f); glVertex3f(1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glColor3f(1, 1, 0); glVertex3f(1.0f, -1.0f, -1.0f);// 左 glVertex3f(1.0f, 1.0f, -1.0f); glVertex3f(1.0f, 1.0f, 1.0f); glVertex3f(1.0f, -1.0f, 1.0f); glColor3f(0, 1, 1); glVertex3f(-1.0f, -1.0f, -1.0f);// 右 glVertex3f(-1.0f, -1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glEnd(); glPopMatrix(); glutSwapBuffers(); } //float step = 0.001; int main(int argc, char * argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100, 100); glutInitWindowSize(320, 320); glutCreateWindow("Hello OpenGL"); init(); glutDisplayFunc(draw); glutIdleFunc(draw); //指定程序空闲时调用函数 // glutReshapeFunc(changeSize); //指定窗口形状变化时的回调函数 glEnable(GL_DEPTH_TEST); glutMainLoop(); return 0; }
相关推荐
基于opengl绘制一个六个面不同颜色的立方体,并且通过鼠标来控制立方体沿三个坐标轴的旋转。
对教科书上旋转彩色立方体程序进行的改良,可以切换物体,改变视点和旋转物体,可用于交计算机图形学作业。。
这个"用OpenGL写的彩色立方体"示例是学习OpenGL基础和3D图形编程的一个很好的起点。在C++环境中,OpenGL通常与GLUT(OpenGL Utility Toolkit)或GLEW(OpenGL Extension Wrangler Library)一起使用,以简化窗口管理...
//颜色立方体的颜色 void myinit(void); //初始化设置 void myReshape(GLsizei w, GLsizei h); //屏幕大小改变时响应函数 void display(void); //屏幕绘制响应函数 void controlIdleFunc(int button, int state, int...
在本项目中,"VC立方体旋转"是一个利用Microsoft Foundation Class (MFC)库开发的图形应用程序,展示了如何在Windows环境中实现3D图形渲染。这个程序的核心是通过正交投影来展示一个立方体,并且对立方体的边进行...
在本实例中,我们将深入探讨如何使用VC++(Visual C++)来创建一个可旋转的彩色立方体。这个立方体不仅能够通过鼠标拖动事件进行交互式旋转,而且在无用户操作时,它还能自动旋转。这样的效果是通过OpenGL图形库实现...
使用 OpenGL ES 绘制旋转的彩色立方体
总结来说,"VC6.0之三维彩色立方体的绘制与运动"这个主题涵盖了OpenGL编程的基础知识,包括顶点定义、颜色设置、几何变换以及用户交互。通过学习这个项目,不仅可以掌握基本的3D图形绘制技巧,还能为更复杂的图形...
一个VC OpenGL API实例:旋转的彩色3D立方体,在窗口缩放的过程中,3D立方体会自动旋转,改变角度,虽然很简单,但可学习一下OpenGL API在VC 中的用法。
详见博客:https://blog.csdn.net/caoshangpa/article/details/80258907 源码中包含了glu和glut等库
这个“OpenGL代码实现动画(彩色立方体中飞出五颜六色气球)”的项目是利用OpenGL来展示动态图形和动画效果的一个实例。下面将详细解释这个项目中涉及的关键知识点。 1. **OpenGL基础知识**: - OpenGL是一个跨...
### 图形学立方体旋转程序知识点解析 #### 一、程序概述 ...以上是对“图形学立方体旋转程序”的核心知识点的详细解析,通过对这段代码的学习,可以深入了解如何使用OpenGL来绘制三维图形,并实现简单的动画效果。
在本项目"crystal-cube"中,我们将探讨如何在Crystal编程语言环境下,结合OpenGL和GLFW库来创建一个可旋转的彩色立方体。 首先,`GLFW`是一个用于创建和管理OpenGL上下文的跨平台库,它提供了窗口管理和输入设备...
这个交互立方体项目可能是通过JavaScript和WebGL库实现的,让用户能够旋转、缩放或者平移立方体,从而提供一个直观的3D环境体验。 【标签】"WebGL"是本教程的核心技术,它建立在HTML5的Canvas元素之上,提供了对...
"旋转彩色立方体"可能是一个源代码文件或者执行文件,实现了不仅旋转而且每个面都有不同颜色的立方体。这展示了如何在3D图形中应用颜色,并可能涉及到了纹理映射或者颜色索引等技术。 总的来说,这个项目旨在教...
vc实现虚拟跟踪球,彩色方块跟随鼠标移动
Qt5.12 OpenGL渲染 通过捕获鼠标事件实现对彩色立方体的缩放、旋转和拖拽平移。程序功能介绍参考本人本站发布的《Qt5+OpenGL 实现彩色正方体显示、缩放、旋转和拖拽平移》文章
简单的OpenGL动画,利用OpenGL的动画功能,实现运动彩色立方体的旋转。
交互式计算机图形学--基于openGL的自顶向下方法,包含6个cpp文件,其中涉及到彩色立方体,以及立方体的旋转、点光源下的阴影显示、鼠标键盘的交互,可改变视景深度。