[英]Why does my triangle in OpenGL (3) doesn't render using lwjgl?
[英]OpenGL does not render my Mesh
我使用LWJGL嘗試渲染以在屏幕上渲染一個簡單的網格 ,但是OpenGL決定不做任何事情。 :(
所以我有一個創建VBO的網格類。 我可以添加一些應該在屏幕上繪制的頂點。
public class Mesh {
private int vbo;
private int size = 0;
public Mesh() {
vbo = glGenBuffers();
}
public void addVertices(Vertex[] vertices) {
size = vertices.length;
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, Util.createFlippedBuffer(vertices), GL_STATIC_DRAW);
}
public void draw() {
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glVertexAttribPointer(0, 3, GL_FLOAT, false, Vertex.SIZE * 4, 0);
glDrawArrays(GL_TRIANGLES, 0, size);
glDisableVertexAttribArray(0);
}
}
這是將頂點添加到網格的方法:
mesh = new Mesh();
Vertex[] vertices = new Vertex[] { new Vertex(new Vector3f(-1, -1, 0)),
new Vertex(new Vector3f(-1, 1, 0)),
new Vertex(new Vector3f(0, 1, 0)) };
mesh.addVertices(vertices);
我很確定我以正確的順序(順時針)添加了它們。
而我的OpenGL設置:
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glFrontFace(GL_CW);
glCullFace(GL_BACK);
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
調用glGetError() 不會返回錯誤(0)。
編輯:
好吧,我發現當談到OpenGL時,macs有點奇怪。 我需要與VBO一起使用VAO。 現在工作正常。 不管怎么說,還是要謝謝你!
我看不到您在指定用於輸出或顏色的着色器或頂點數組的任何地方。 根據您使用的配置文件,您需要執行其中一項或多項操作。
我建議檢查/設置以下內容
您可能沒有在視錐中繪制該對象,還可以調用glCheckError以確保您沒有犯任何錯誤。
了解固定管線和可編程管線OpenGL之間的區別也很重要。 如果您使用的是帶有可編程管線的版本,則需要編寫着色器,否則需要設置模型視圖和投影矩陣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.