Soirtous,

Je fais(j'essaye) de faire de l'openGL avec les MFC.
Je suis parvenu a afficher un cube, seulement je bloque pour la texture.
J'ai deja realiser des application en C(sans MFC ni rien) et la je suis arrive a appliquer des textures, seulement maintenant j'essaye de proceder de la meme facon avec les mfc et je n'y arrive pas.
Si vous pouvez me filer un coup de main, parce que la je suis bloquer.

Donc je realise une application avec les MFC:
IDE: Visual C++ 6.0
OS: windows(normal)

Ma fenetre avec l'openGL marche(je peut faire bouger mon cube, ca marche) seul la texture n'est pas prise en compte.

Je ne met pas tout le code pour pas surchager la page mais je peut envoyer toute l'appli si necessaire (j'ai pas de site ou la mettre en download).

Voici le code principal
Je compile sans erreur et le cube s'affiche en gris, aucune texture n'est ajouter.
La texture est charger a partir d'une bitmap(couleur:24bits).

Dans mon .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
		GLuint m_gltexture[1];
Dans mon .cpp (y pas tout le code, que ce qui m'a parut pertinent)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
void COpenGLControl::OnSize(UINT nType, int cx, int cy)
{
	CWnd::OnSize(nType, cx, cy);
 
	if (0 >= cx || 0 >= cy || nType == SIZE_MINIMIZED) return;
 
	// Map the OpenGL coordinates.
	glViewport(0, 0, cx, cy);
	// Projection view
	glMatrixMode(GL_PROJECTION);
 
	glLoadIdentity();
	// Set our current view perspective
	gluPerspective(35.0f, (float)cx / (float)cy, 0.01f, 2000.0f);
	// Model view
	glMatrixMode(GL_MODELVIEW);
}
 
int COpenGLControl::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CWnd::OnCreate(lpCreateStruct) == -1) return -1;
	oglInitialize();
	return 0;
}
 
void COpenGLControl::OnDraw(CDC *pDC)
{
	// If the current view is perspective...
	glLoadIdentity();
}
 
void COpenGLControl::OnTimer(UINT nIDEvent)
{
	switch (nIDEvent)
	{
		case 1:
		{
			// Clear color and depth buffer bits
			glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
			// Draw OpenGL scene
			oglDrawScene();
			// Swap buffers
			SwapBuffers(hdc);
			break;
		}
		default:
			break;
	}
 
	CWnd::OnTimer(nIDEvent);
}
 
void COpenGLControl::oglCreate(CRect rect, CWnd *parent)
{
	CString className = AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW | CS_OWNDC, NULL, (HBRUSH)GetStockObject(BLACK_BRUSH), NULL);
 
	CreateEx(0, className, "OpenGL", WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, rect, parent, 0);
 
	// Set initial variables' values
	m_oldWindow	   = rect;
	m_originalRect = rect;
	hWnd = parent;
}
 
void COpenGLControl::oglInitialize(void)
{
	// Initial Setup:
	//
	static PIXELFORMATDESCRIPTOR pfd =
	{
		sizeof(PIXELFORMATDESCRIPTOR),
		1,
		PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER,
		PFD_TYPE_RGBA,
		32, // bit depth
		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
		16, // z-buffer depth
		0, 0, 0, 0, 0, 0, 0,
	};
 
	// Get device context only once.
	//hdc = GetDC()->m_hDC;
	hdc = ::GetDC(m_hWnd);
 
	// Pixel format.
	m_nPixelFormat = ChoosePixelFormat(hdc, &pfd);
	SetPixelFormat(hdc, m_nPixelFormat, &pfd);
 
	// Create the OpenGL Rendering Context.
	hrc = wglCreateContext(hdc);
	wglMakeCurrent(hdc, hrc);
 
	// Basic Setup:
	//
	// Set color to use when clearing the background.
	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
 
	// Turn on depth testing
	glEnable(GL_DEPTH_TEST);
 
	// Activation du texturing
	glEnable(GL_TEXTURE_2D);
 
	// Activation de la lumière
	glEnable(GL_LIGHTING);
	glEnable(GL_LIGHT0);
 
	// Chargement de la texture
	if(LoadGLTextures("data/texture.bmp", m_gltexture[0])==FALSE) // La fonction marche bien je l'ai recuperer de mon projet en C
		return;
 
	// Send draw request
	OnDraw(NULL);
}
 
void COpenGLControl::oglDrawScene(void)
{
	GLint texture;
 
	// Sélection de la texture
	texture = m_gltexture[0];
	glBindTexture(GL_TEXTURE_2D, texture);
 
	glBegin(GL_QUADS);
			// Front Side
			glVertex3f( 1.0f,  1.0f, 1.0f); glTexCoord2f( 0, 0);
			glVertex3f(-1.0f,  1.0f, 1.0f); glTexCoord2f( 0, 1);
			glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2f( 1, 1);
			glVertex3f( 1.0f, -1.0f, 1.0f); glTexCoord2f( 1, 0);
 
			//
			// Meme chose pour les 5 autres faces
			//
	glEnd();
}

Voila voila, donc je n'ai pas de texture, a priori je pensai que ca venait de l'initialisation mais j'ai rien trouver.

Si il vous manque des infos, ou si vous voulez le code, n'hesitez pas.

Merci.