J'utilise LWJGL 3 sous OSX. Les shaders fonctionnent correctement lors de l'utilisation d'une version < 150 mais le portage du code sur 330 ne rend rien.LWJGL 3 Shaders version 150 et supérieure ne restituant rien
Mes shaders sont aussi simples que possible:
vertex shader:
#version 330 core
in vec3 position;
void main(void) {
gl_Position = vec4(position, 1.0);
}
fragment shader:
#version 330 core
out vec4 outColour;
void main(void) {
outColour = vec4(1.0, 0.0, 0.0, 1.0);
}
créer un triangle simple comme celui-ci (Scala) :
val vertices = Array(
0.0f, 0.5f, 0.0f,
-0.5f, -0.5f, 0.0f,
0.5f, -0.5f, 0.0f
)
val vertexBuffer = BufferUtils.createFloatBuffer(vertices.length)
vertexBuffer.put(vertices)
vertexBuffer.flip()
val buffer = GL15.glGenBuffers()
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, vertexBuffer, GL15.GL_STATIC_DRAW)
et je tire comme ceci:
GL20.glUseProgram(shader)
GL20.glEnableVertexAttribArray(0)
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, buffer)
GL20.glBindAttribLocation(shader, 0, "position")
GL20.glVertexAttribPointer(0, 3, GL11.GL_FLOAT, false, 0, 0)
GL11.glDrawArrays(GL11.GL_TRIANGLES, 0, 9)
GL20.glDisableVertexAttribArray(0)
GL20.glUseProgram(0)
Les shaders fins et le compilez programme fonctionne, mais je reçois juste un écran vide! Y at-il quelque chose qui ne va pas avec mon code?
Où est votre VAO? Ceux-ci sont requis dans un contexte de base. – genpfault
@ j-p: Aucun index n'est impliqué lors du dessin avec glDrawArrays. Seule la famille glDrawElements utilise des indices. – BDL
pourquoi le vote vers le bas? S'il vous plaît expliquer si je peux améliorer la question – Oli