我的項(xiàng)目中有一個(gè)問(wèn)題,我試圖在屏幕上繪制金字塔,但沒(méi)有顯示深度。public void create(float[] vertices, int[] indices, int numberOfVertices, int numberOfIndices) { indexCount = numberOfIndices; vao = gl.genVertexArrays(); gl.bindVertexArray(vao); IntBuffer indicesBuffer = factory.create(indices); ibo = gl.genBuffers(); gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); gl.bufferData(GL_ELEMENT_ARRAY_BUFFER, indicesBuffer, GL_STATIC_DRAW); FloatBuffer verticesBuffer = factory.create(vertices); vbo = gl.genBuffers(); gl.bindBuffer(GL_ARRAY_BUFFER, vbo); gl.bufferData(GL_ARRAY_BUFFER, verticesBuffer, GL_STATIC_DRAW); gl.vertexAttribPointer(0, 3, GL_FLOAT, false, 0, 0); gl.enableVertexAttribArray(0); gl.bindBuffer(GL_ARRAY_BUFFER, 0); gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); gl.bindVertexArray(0); }我使用以下代碼創(chuàng)建網(wǎng)格對(duì)象,其中頂點(diǎn)和索引定義為:private void createTriangles() { float[] vertices = new float[] { //x y z -1.0f, -1.0f, 0.0f, //0 0.0f, 0.0f, 1.0f, //1 1.0f, -1.0f, 0.0f, //2 0.0f, 1.0f, 0.0f //3 }; int[] indices = new int[] { 0, 3, 1, 1, 3, 2, 2, 3, 0, 0, 1, 2 }; mesh.create(vertices, indices, 12, 12);}為了將它們顯示到屏幕上,我從定義為的游戲循環(huán)中調(diào)用了渲染函數(shù)。public void render() { gl.bindVertexArray(vao); gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); gl.drawElements(GL_TRIANGLES, indexCount, GL_UNSIGNED_INT, 0); gl.bindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); gl.bindVertexArray(0);}所以我得到的問(wèn)題是它應(yīng)該繪制四個(gè)三角形來(lái)篩選以形成金字塔,但是我的輸出看起來(lái)像這樣。我已經(jīng)旋轉(zhuǎn)了圖像以嘗試查看深度,但它是一個(gè)平面對(duì)象。我試圖通過(guò)將渲染方法更改為gl.drawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0);僅繪制一個(gè)三角形來(lái)嘗試單獨(dú)繪制每個(gè)三角形,從而確定問(wèn)題可能來(lái)自何處。我試圖單獨(dú)繪制所有四個(gè)面,并且都被繪制到屏幕上。
1 回答

浮云間
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
我發(fā)現(xiàn)了這個(gè)問(wèn)題。我最初是縮放三角形使得
model.scale(new Vector3f(0.2f, 0.2f, 0.0f));
結(jié)果 z 軸被乘以 0。愚蠢的錯(cuò)誤,希望這對(duì)將來(lái)的人有所幫助
添加回答
舉報(bào)
0/150
提交
取消