【发布时间】:2011-11-15 22:53:35
【问题描述】:
我想我可能严重误解了 gluperspective() 的用法并需要帮助。
我目前有这段代码会产生一个空白的黑屏(据我所知,它应该产生两个正方形,一个更近,一个更远)。它不这样做,我需要理解为什么不这样做。
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
#include <GL/glu.h>
#include "functionfile.h"
int main(int argc, char **argv)
{
init_perspective(640, 480);
glTranslatef(0,0,10);
glColor4f(1.0,1.0,1.0,1.0);
glBegin(GL_QUADS);
glVertex3f(0, 0,0);
glVertex3f(10, 0,0);
glVertex3f(10,10,0);
glVertex3f(0, 10,0);
glEnd();
glLoadIdentity();
glTranslatef(0,0,50);
glBegin(GL_QUADS);
glVertex3f(0, 0, 0);
glVertex3f(10, 0, 0);
glVertex3f(10, 10, 0);
glVertex3f(0, 10, 0);
glEnd();
glLoadIdentity();
SDL_GL_SwapBuffers();
SDL_Delay(2000);
SDL_Quit();
return 0;
}
// from header file "functionfile.h"
void init_perspective(int width, int height)
{
SDL_Init(SDL_INIT_EVERYTHING);
SDL_SetVideoMode(width, height, 32, SDL_OPENGL);
SDL_WM_SetCaption( "OpenGL Test", NULL );
glClearColor( 0, 0, 0, 0 );
glMatrixMode( GL_PROJECTION );
glLoadIdentity();
gluPerspective(45, width/height, 1, 100);
glMatrixMode( GL_MODELVIEW );
glLoadIdentity();
glClear( GL_COLOR_BUFFER_BIT );
}
【问题讨论】:
-
试试
glTranslatef(0, 0, -10)和glTranslatef(0, 0, -50) -
啊,忘了它默认是向下看-z轴的,我现在至少可以在屏幕上看到一些东西了,非常感谢!
标签: opengl