Bonjour à tous,
J'ai passé beaucoup de temps à plancher sur le problème est là j'aurais bien besoin d'un petit coup de pouce avec les "Vertex Shaders" et "Fragment Shaders"
J'ai défini un vertex comme suit :
Ensuite afin d'éventuellement dessiner je fais ceciCode:
1
2
3
4
5
6
7 Structure Vertex Position.Vector3::Vector3 Normal.Vector3::Vector3 STMap.Vector2::Vector2 EndStructure
Et de ce que j'ai compris, la position du vertex est dans le Flux 0, la normale dans le 1 et les coordonnées UV (ou ST au choix) sont dans le 2.Code:
1
2
3
4
5
6
7
8 OGL::glVertexAttribPointer(0, 3, #GL_FLOAT, #GL_FALSE, SizeOf(Vertex), OffsetOf(Vertex\Position)) OGL::glVertexAttribBinding(0, 0) OGL::glVertexAttribPointer(1, 3, #GL_FLOAT, #GL_FALSE, SizeOf(Vertex), OffsetOf(Vertex\Normal)) OGL::glVertexAttribBinding(1, 0) OGL::glVertexAttribPointer(2, 2, #GL_FLOAT, #GL_FALSE, SizeOf(Vertex), OffsetOf(Vertex\STMap)) OGL::glVertexAttribBinding(2, 0)
Et c'est là que je bloque, je sais pas comment écrire le Vertex Shader et le Fragment Shader pour qu'un modèle 3D avec une texture s'affiche à l'écran. Ma question est-ce qu'un vertex shader de base ressemblerait à ceci :
Et le fragment Shader :Code:
1
2
3
4
5
6
7
8
9
10
11 #version 330 core layout(location = 0) in vec3 VertexPosition layout(location = 1) in vec3 VertexNormal layout(location = 2) in vec2 VertexSTMap void main { gl_Position = vec4(VertexPosition, 1.0); }
Merci à l'avance.Code:
1
2
3
4
5
6
7 uniform sampler2D tex; void main() { vec4 color = texture2D(tex,gl_TexCoord[0].st); gl_FragColor = color; }
A+
StarBootics