Bonjour,

Je viens encor une nouvelle fois vers vous car je me trouve confronter à un problème avec le tuto sur le moteur 3D Yes::Engine.

Je suis entrain d'implémenter une classe C_Model mais j'ai rencontrer un problème de scintillement.
J'ai donc voulu faire un test pour voir ou se situe le problème.

Si j'essaye de faire l'exemple suivant comme dans le tuto tous se passe bien (affichage du rectangle) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
        // Création du vertex buffer - rectangle centré en (0, 0)
	TVertex Vertices[] =
	{
		{ -200, -100, 0, Renderer.ConvertColor(0xFF008080) },
		{ 200, -100, 0, Renderer.ConvertColor(0xFF303050) },
		{ -200, 100, 0, Renderer.ConvertColor(0xFF505000) },
		{ 200, 100, 0, Renderer.ConvertColor(0xFF1090F0) },
	};
	m_VertexBuffer = Renderer.CreateVertexBuffer(4, 0, Vertices);
 
	// Création de la déclaration de vertex
	TDeclarationElement Decl[] =
	{
		{ 0, ELT_USAGE_POSITION, ELT_TYPE_FLOAT3 },
		{ 0, ELT_USAGE_DIFFUSE, ELT_TYPE_COLOR }
	};
	m_Declaration = Renderer.CreateVertexDeclaration(Decl);
 
 
     ///////////////////////////////////////////////
     // Dans la fonction Render
     //////////////////////////////////////////////////
Renderer.BeginScene(); // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
        // Affichage du rectangle
	Renderer.SetDeclaration(m_Declaration);
	Renderer.SetVertexBuffer(0, m_VertexBuffer);
	Renderer.DrawPrimitives(PT_TRIANGLESTRIP, 0, 2);
Renderer.EndScene(); // SwapBuffers(m_Handle);
Mais lorsque j'essaye d'afficher un Cube avec les index la j'ai un scintillement qui apparait.
Voici le code tester pour le Cube :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
        // Création du vertex buffer - Cube
	T_Vertex Vertices[] =
	{
		{ -1.0f, 1.0f, -1.0f, Renderer.ConvertColor(0xFF008080) },
		{ -1.0f, -1.0f, -1.0f, Renderer.ConvertColor(0xFF303050) },
		{ -1.0f, 1.0f, 1.0f, Renderer.ConvertColor(0xFF505000) },
		{ -1.0f, -1.0f, 1.0f, Renderer.ConvertColor(0xFF1090F0) },
 
		{ 1.0f, 1.0f, 1.0f, Renderer.ConvertColor(0xFF1090F0) },
		{ 1.0f, -1.0f, 1.0f, Renderer.ConvertColor(0xFF1090F0) },
		{ 1.0f, 1.0f, -1.0f, Renderer.ConvertColor(0xFF1090F0) },
		{ 1.0f, -1.0f, -1.0f, Renderer.ConvertColor(0xFF1090F0) },
	};
	m_VertexBuffer = Renderer.CreateVertexBuffer(8, 0, Vertices);
 
	// Création de l'index buffer - Cube
	T_Index Indices[] = { 0, 1, 2, 2, 1, 3,
		4, 5, 6, 6, 5, 7,
		3, 1, 5, 5, 1, 7,
		0, 2, 6, 6, 2, 4,
		6, 7, 0, 0, 7, 1,
		2, 3, 4, 4, 3, 5 };
	m_indexBuffer = Renderer.CreateIndexBuffer(36, 0, Indices);
 
	// Création de la déclaration de vertex
	TDeclarationElement Decl[] =
	{
		{ 0, ELT_USAGE_POSITION, ELT_TYPE_FLOAT3 },
		{ 0, ELT_USAGE_DIFFUSE, ELT_TYPE_COLOR }
	};
	m_Declaration = Renderer.CreateVertexDeclaration(Decl);
 
 
     ///////////////////////////////////////////////
     // Dans la fonction Render
     //////////////////////////////////////////////////
 
        // Affichage du Cube
Renderer.BeginScene(); // glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
	Renderer.SetDeclaration(m_Declaration);
	Renderer.SetVertexBuffer(0, m_VertexBuffer);
	Renderer.SetIndexBuffer(m_indexBuffer);
	Renderer.DrawPrimitives(PT_TRIANGLELIST, 0, m_indexBuffer.GetCount() / 3);
Renderer.EndScene(); // SwapBuffers(m_Handle);
J'aurais aimer savoir si quelqu'un était tomber sur ce problème ou si quelqu'un avait une proposition du à se problème?

Je précise également j'utilise les même configuration que le tuto l'initialisation de Opengl :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
// States par défaut
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
    glClearDepth(1.0f);
    glClearStencil(0x00);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
    glEnable(GL_DEPTH_TEST);
J'ai également essayer de rajouter le code ci-dessous pour désactiver après le rendu les buffer mais aucun résultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
        glColor4f(1, 1, 1, 1);
	glDisableClientState(GL_VERTEX_ARRAY);
	glDisableClientState(GL_NORMAL_ARRAY);
	glDisableClientState(GL_COLOR_ARRAY);
 
	glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
	glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);