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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
  Structure Vertex
 
    Position.Vector3::Vector3
    Normal.Vector3::Vector3
    STMap.Vector2::Vector2
 
  EndStructure
Ensuite afin d'éventuellement dessiner je fais ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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.

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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
}
Et le fragment Shader :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
uniform sampler2D tex;
 
void main()
{
	vec4 color = texture2D(tex,gl_TexCoord[0].st);
	gl_FragColor = color;
}
Merci à l'avance.

A+
StarBootics