我在Java中使用LWJGL和GLSL着色器渲染Master Cheif時出現了一些問題,其中有些閃爍,消失了多邊形和奇怪的着色。而對於我的生活,我無法弄清楚爲什麼。OpenGL - Java - 渲染問題,多邊形閃爍和消失
它應該是什麼樣子:
它是什麼樣子,當我移動相機一點:
着色器: https://github.com/marko5049/LucidEngine/tree/master/src/res/shaders
MainShaders: LightingMain ShdaowMapping Smapler 篩選器
所有代碼: https://github.com/marko5049/LucidEngine
靜態網格:
public void addVertices(Vertex[] vertices, int[] indices, boolean calcNorm) {
if(calcNorm) {
vertices = calcNormals(vertices, indices);
}
handler.setSize(indices.length);
EngineCore.polycount += indices.length/3;
glBindBuffer(GL_ARRAY_BUFFER, handler.getVbo());
glBufferData(GL_ARRAY_BUFFER, Util.createFlippedBuffer(vertices), GL_STATIC_DRAW);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, handler.getIbo());
glBufferData(GL_ELEMENT_ARRAY_BUFFER, Util.createFlippedBuffer(indices), GL_STATIC_DRAW);
}
private void finalDraw(int typeIndex) {
glEnableVertexAttribArray(0);
glEnableVertexAttribArray(1);
glEnableVertexAttribArray(2);
glEnableVertexAttribArray(3);
glBindBuffer(GL_ARRAY_BUFFER, handler.getVbo());
glVertexAttribPointer(0, 3, GL_FLOAT, false, Vertex.SIZE * 4, 0);
glVertexAttribPointer(1, 2, GL_FLOAT, false, Vertex.SIZE * 4, 12);
glVertexAttribPointer(2, 3, GL_FLOAT, false, Vertex.SIZE * 4, 20);
glVertexAttribPointer(3, 3, GL_FLOAT, false, Vertex.SIZE * 4, 32);
glVertexAttribPointer(3, 3, GL_FLOAT, false, Vertex.SIZE * 4, 44);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, handler.getIbo());
glDrawElements(typeIndex, handler.getSize(), GL_UNSIGNED_INT, 0);
glDisableVertexAttribArray(0);
glDisableVertexAttribArray(1);
glDisableVertexAttribArray(2);
glDisableVertexAttribArray(3);
}
從外觀上看,它看起來可能是深度戰鬥。你可以嘗試將近平面遠離,還是遠平面靠近? RenderingEngine.java中的第54行。例如,嘗試1.0和100.0而不是0.1和1000.0。 – 2014-08-30 14:06:06
@ReetoKoradi Totaly修復它非常感謝! – marko5049 2014-08-31 02:25:01