尝试使用OpenGL绘制wavefront obj文件,但似乎存在深度缓冲问题。
来源:
// Default constructor
Engine::Engine()
{
initialize();
loadModel();
start();
}
// Initialize OpenGL
void Engine::initialize()
{
// Enable depth test
glEnable(GL_DEPTH_TEST);
// Enable depth write
glDepthMask(GL_TRUE);
}
void Engine::start()
{
// Main loop
while(isOpen())
{
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// Draw 3D model to screen
draw();
}
}
答案 0 :(得分:2)
要检查的事项:
glEnable(GL_DEPTH_TEST)
glDepthMask(true)
Assert(glGetIntegerv(GL_DEPTH_BITS) != 0))
答案 1 :(得分:1)
请求具有深度缓冲区和glEnable(GL_DEPTH_TEST)
的GL上下文。
试试这个:
mainWindow.create
(
sf::VideoMode
(
settings.getWidth(),
settings.getHeight()
),
"",
sf::Style::Resize,
sf::ContextSettings( 16, 0, 0, 2, 0 )
);
答案 2 :(得分:1)
你有没有激活深度测试?
glEnable(GL_DEPTH_TEST);
答案 3 :(得分:0)
您使用的是顶点着色器吗?如果在顶点着色器的出口处gl_Position.z意外地设置为0,则会发生这种情况。或者我认为-1到1之间的任何值。
如果所有顶点在输入阶段之前具有相等的z值,也会发生这种情况,尽管在这种情况下转换矩阵必定存在问题。或者只是你可能正在使用转换矩阵做一些非常奇特的事情,模型很好。您是否设置了MODELVIEW和PROJECTION,并相应地相乘?在顶点着色器中还是在FFP中?