- 已关闭。**此问题需要debugging details。当前不接受答案。
编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
18小时前关门了。
Improve this question
当绘制多个正方形面时,其他面后面的面仍在绘制中,但这只发生在正方形的左边。这只发生在左边和右边的正方形都正确绘制时
working
not working
生成正方形的代码
float x = 0.5f + offsetX;
float y = 0.5f + offsetY;
float z = 0.5f + offsetZ;
float nx = x - 1.0f;
float ny = y - 1.0f;
float nz = z - 1.0f;
float vertices[] = {
nx, ny, nz, 0.0f, 0.0f, // bottom-left
x, ny, nz, 1.0f, 0.0f, // bottom-right
x, y, nz, 1.0f, 1.0f, // top-right
x, y, nz, 1.0f, 1.0f, // top-right
nx, y, nz, 0.0f, 1.0f, // top-left
nx, ny, nz, 0.0f, 0.0f, // bottom-left
};
for (float face : vertices) {
vetexData.push_back(face);
}
我使用glClear(GL_COLOR_BUFFER_BIT)重置每一帧的深度缓冲区|GL_深度_缓冲区_位);
我尝试了所有不同的正面模式(GL_FRONT/GL_BACK),我启用了深度缓冲区
1条答案
按热度按时间dgtucam11#
你好像混淆了两个概念。
1.面剔除的启用方式如下:
这将删除背向您的面 (如果使用GL_FRONT,则为朝向您的面)。
1.深度测试需要深度缓冲区...
这将对绘制的每个三角形执行每个像素的深度测试。我假设您要进行的是深度测试。如果您调用了glEnable(GL_DEPTH_TEST)但没有任何效果,则需要在初始化OpenGL上下文时指定深度缓冲区。