C++ 你看不工作吗?
为什么gluLookAt不起作用 它对场景没有任何影响,就好像它甚至没有被调用一样 是因为我使用的是C++ 你看不工作吗?,c++,opengl,game-engine,C++,Opengl,Game Engine,为什么gluLookAt不起作用 它对场景没有任何影响,就好像它甚至没有被调用一样 是因为我使用的是glMatrixMode(GL_MODELVIEW)如果我不包括它,我在屏幕上什么也得不到 我正在使用GLFW、GLEW和GLM // game.cpp: Car* car; void Game::init() { // LOADING SHADERS: loadShaders(); // CREATING ENTITIES: car = new Car();
glMatrixMode(GL_MODELVIEW)代码>如果我不包括它,我在屏幕上什么也得不到
我正在使用GLFW、GLEW和GLM
// game.cpp:
Car* car;
void Game::init()
{
// LOADING SHADERS:
loadShaders();
// CREATING ENTITIES:
car = new Car();
//cube->position.x = -0;
car->position.z = -2;
entities.push_back(car);
// INITIAL GL PARAMETERS:
glEnable(GL_CULL_FACE); // BACK FACE CULLING
glEnable(GL_DEPTH_TEST); // DRAW NON-OBSCURED
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // FILL POLYGON MODE
glClearColor(0.3f, 0.5f, 0.9f, 0.0f); // BACKGROUND COLOR
glMatrixMode(GL_PROJECTION);
gluPerspective(CAMERA_FOVY, (GLdouble)WINDOW_WIDTH / (GLdouble)WINDOW_HEIGHT, CAMERA_ZNEAR, CAMERA_ZFAR);
}
void Game::update()
{
for (int i = 0; i != entities.size(); ++i)
{
entities[i]->update();
}
}
void Game::render()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(0, 0, 0, car->position.x, car->position.y, car->position.z, 0, -1, 0);
for (int i = 0; i != entities.size(); ++i)
{
glLoadIdentity();
glTranslatef(entities[i]->position.x, entities[i]->position.y, entities[i]->position.z);
glRotatef(entities[i]->rotation.x, 1.0f, 0.0f, 0.0f);
glRotatef(entities[i]->rotation.y, 0.0f, 1.0f, 0.0f);
glRotatef(entities[i]->rotation.z, 0.0f, 0.0f, 1.0f);
entities[i]->render();
}
}
您正在循环实体的每次迭代开始时调用glLoadIdentity
。在第一次迭代中,这将替换由gluLookAt
设置的矩阵
为确保此视图矩阵适用于在调用gluLookAt
后要调用glPushMatrix
的所有实体。确保在for循环之后调用glPopMatrix
来平衡这一点。在for循环实体的每次迭代开始时调用glLoadIdentity
。在第一次迭代中,这将替换由gluLookAt
设置的矩阵
为确保此视图矩阵适用于在调用gluLookAt
后要调用glPushMatrix
的所有实体。确保在for循环之后通过调用glPopMatrix
来平衡这一点。着色器在哪里?考虑到gllookat(…)
的使用,我将大胆猜测,并说这段代码是完全固定的函数;)你的着色器在哪里?考虑到gluLookAt(…)
的使用,我将大胆猜测,并说这段代码是完全固定的函数;)