在openGL中:如何在平面上移动对象(立方体)并保持曲面静止? #包括 #包括 GLfloat顶点[][3]={ {0.0,0.0,0.0},{0.0,0.4,0.0},{0.4,0.4,0.0},{0.4,0.0,0.0} }; GLfloat color[2][3]={{1.0,0.0,0.0},{0.0,1.0,0.0}; 无效董事会() { GL3F(0.0,0.0,1.0); glBegin(GL_线_环); glVertex3f(-0.8,-0.8,0.0); glVertex3f(-0.8,0.80,0.0); glVertex3f(0.80,0.80,0.0); glVertex3f(0.8,-0.80,0.0); 格伦德(); } void立方体() { glBegin(GL_线_环); GL3F(1.0,0.0,0.0); glVertex3fv(顶点[0]); glVertex3fv(顶点[1]); glVertex3fv(顶点[2]); glVertex3fv(顶点[3]); 格伦德(); } 无效显示() { glClearColor(1.0,1.0,1.0,1.0); 政府统计处(0,0600600),; glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位); 立方体(); 董事会(); glFlush(); } void mykey(int key,int x,int y) { 开关(钥匙){ 案例过量键左:GLTRANSTEF(-0.4,0.0,0.0);中断; 案例过量键右:GLTRANSTEF(0.4,0.0,0.0);中断; 案例过量键:GLTRANSTEF(0.0,0.4,0.0);中断; 案例过量键向下:GLTRANSTEF(0.0,-0.3,0.0);中断; } 再发现(); } void myinit() { glMatrixMode(GL_投影); glLoadIdentity(); 格洛托(02000400,-1,1); glMatrixMode(GLU模型视图); } int main(int argc,字符**argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_单个| GLUT_RGB | GLUT_深度); glutInitWindowSize(600600); “你好”; glutDisplayFunc(显示器); glutSpecialFunc(mykey); glutMainLoop(); 返回0; }
OpenGL是一种绘图API,而不是场景渲染器。你想改变什么吗?然后你必须重新画出整件事在openGL中:如何在平面上移动对象(立方体)并保持曲面静止? #包括 #包括 GLfloat顶点[][3]={ {0.0,0.0,0.0},{0.0,0.4,0.0},{0.4,0.4,0.0},{0.4,0.0,0.0} }; GLfloat color[2][3]={{1.0,0.0,0.0},{0.0,1.0,0.0}; 无效董事会() { GL3F(0.0,0.0,1.0); glBegin(GL_线_环); glVertex3f(-0.8,-0.8,0.0); glVertex3f(-0.8,0.80,0.0); glVertex3f(0.80,0.80,0.0); glVertex3f(0.8,-0.80,0.0); 格伦德(); } void立方体() { glBegin(GL_线_环); GL3F(1.0,0.0,0.0); glVertex3fv(顶点[0]); glVertex3fv(顶点[1]); glVertex3fv(顶点[2]); glVertex3fv(顶点[3]); 格伦德(); } 无效显示() { glClearColor(1.0,1.0,1.0,1.0); 政府统计处(0,0600600),; glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位); 立方体(); 董事会(); glFlush(); } void mykey(int key,int x,int y) { 开关(钥匙){ 案例过量键左:GLTRANSTEF(-0.4,0.0,0.0);中断; 案例过量键右:GLTRANSTEF(0.4,0.0,0.0);中断; 案例过量键:GLTRANSTEF(0.0,0.4,0.0);中断; 案例过量键向下:GLTRANSTEF(0.0,-0.3,0.0);中断; } 再发现(); } void myinit() { glMatrixMode(GL_投影); glLoadIdentity(); 格洛托(02000400,-1,1); glMatrixMode(GLU模型视图); } int main(int argc,字符**argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_单个| GLUT_RGB | GLUT_深度); glutInitWindowSize(600600); “你好”; glutDisplayFunc(显示器); glutSpecialFunc(mykey); glutMainLoop(); 返回0; },opengl,Opengl,OpenGL是一种绘图API,而不是场景渲染器。你想改变什么吗?然后你必须重新画出整件事 #include<gl/glut.h> #include<stdio.h> GLfloat vertices[][3]={ {0.0,0.0,0.0},{0.0,0.4,0.0},{0.4,0.4,0.0},{0.4,0.0,0.0} }; GLfloat color[2][3]={ {1.0,0.0,0.0},{0.0,1.0,0.0}}; void board() {
#include<gl/glut.h>
#include<stdio.h>
GLfloat vertices[][3]={
{0.0,0.0,0.0},{0.0,0.4,0.0},{0.4,0.4,0.0},{0.4,0.0,0.0} };
GLfloat color[2][3]={ {1.0,0.0,0.0},{0.0,1.0,0.0}};
void board()
{
glColor3f(0.0,0.0,1.0);
glBegin(GL_LINE_LOOP);
glVertex3f(-0.8,-0.8,0.0);
glVertex3f(-0.8,0.80,0.0);
glVertex3f(0.80,0.80,0.0);
glVertex3f(0.8,-0.80,0.0);
glEnd();
}
void cube()
{
glBegin(GL_LINE_LOOP);
glColor3f(1.0,0.0,0.0);
glVertex3fv(vertices[0]);
glVertex3fv(vertices[1]);
glVertex3fv(vertices[2]);
glVertex3fv(vertices[3]);
glEnd();
}
void display()
{
glClearColor(1.0,1.0,1.0,1.0);
glViewport(0,0,600,600);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
cube();
board();
glFlush();
}
void mykey(int key,int x,int y)
{
switch(key){
case GLUT_KEY_LEFT: glTranslatef(-0.4,0.0,0.0); break;
case GLUT_KEY_RIGHT: glTranslatef(0.4,0.0,0.0); break;
case GLUT_KEY_UP: glTranslatef(0.0,0.4,0.0); break;
case GLUT_KEY_DOWN: glTranslatef(0.0,-0.3,0.0); break;
}
glutPostRedisplay();
}
void myinit()
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0,200,0,400,-1,1);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc,char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
glutInitWindowSize(600,600);
glutCreateWindow("hello");
glutDisplayFunc(display);
glutSpecialFunc(mykey);
glutMainLoop();
return 0;
}