OpenGL在给定的空间和相机中制作房间

时间:2013-09-30 15:30:18

标签: c++ opengl

这是我必须使用的设置(我无法更改任何这些值)

#include <stdlib.h>
#include <GL/glut.h>
const GLdouble FRUSTDIM = 100.0f;

void reshape(int w, int h) // Resize the GL Window. w=width, h=height
{
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glFrustum(-FRUSTDIM, FRUSTDIM, -FRUSTDIM, FRUSTDIM, 320., 640.);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
}

我想建造一堵墙,但有些事情是错的,我不太明白。如果我没弄错的话,当前的空间是(-100 - 100)x(-100 - 100)x(320 - 640),相机当前是0,0,320

我想建一个房间,但我甚至无法设置一堵墙:( ....

我尝试过使用QUADS和QUAD_STRIP,但是当我运行它时它仍然不会出现D:

我的代码:

void display(void)
{
    glBegin(GL_QUADS);
    glColor3f(1,1,1);
    glVertex3f(50,50,420);
    glVertex3f(50,-50,420);
    glVertex3f(-50,-50,420);
    glVertex3f(-50,50,420);
    glEnd();

    glutSwapBuffers();
    glFlush();  
}

我只需画一堵墙让自己前进。如果有任何代码你认为需要解决我的问题,评论我会编辑我的问题。 (仅供参考,其他代码工作正常,因为骨架是让我开始自己去的。)

1 个答案:

答案 0 :(得分:1)

需要包括:

glClear(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT); // clearing window    
glDisable(GL_LIGHTING);
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

使窗口清晰可供您查看对象。另外:

glTranslatef(-100,-100,-630.0);
glBegin(GL_QUADS);
/* Back Wall */
glColor3f(1.0f, 0.0f, 0.0f);
glNormal3f(0,0,1);
glVertex3f(0,0,0);
glVertex3f(200,0,0);
glVertex3f(200,200,0);
glVertex3f(0,200,0);
glEnd();

这将成为墙(几乎相同,但只是在构建之前添加了翻译)。