Bonjour,

J'esseye de faire une application graphique avec wxWidgets qui contient de l'opengl et que l'ont puisse redimensionner la fenêtre.

Voici mon code:
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
#include "main.h"
 
MyFrame_main::MyFrame_main() : wxFrame(NULL, -1, "Hello GL World", wxPoint(-1, -1), wxSize(1024,790), wxDEFAULT_FRAME_STYLE)
{
	MyGLCanvas = new wxGLCanvas(this, -1, wxPoint(0,0));
	wxSizer *sizer = new wxBoxSizer(wxHORIZONTAL);
	sizer->Add(MyGLCanvas, 1, wxALL|wxEXPAND, 0);
	SetSizer(sizer);
	SetAutoLayout(true);
	Layout();
 
	Show(true);
 
	MyGLCanvas->SetCurrent();
	wxSafeYield();
 
	initialization ();
	drawScene();
 
	MyGLCanvas->SwapBuffers();
}
 
void MyFrame_main::initialization()
{
	glShadeModel(GL_SMOOTH);
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	glClearDepth(1.0f);
	glEnable(GL_DEPTH_TEST);
	glDepthFunc(GL_LEQUAL);
	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}
 
void MyFrame_main::drawScene()
{	
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();
 
	glTranslatef(-1.5f,0.0f,-6.0f);
	glBegin(GL_TRIANGLES);
		glVertex3f( 0.0f, 1.0f, 0.0f);
		glVertex3f(-1.0f,-1.0f, 0.0f);
		glVertex3f( 1.0f,-1.0f, 0.0f);
	glEnd();
 
	glFlush();
}
 
void MyFrame_main::onResize(wxSizeEvent& event)
{
	Layout();
	GetSize(&width, &height);
 
	glViewport(0, 0, width, height);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();
 
	gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
 
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
}
 
BEGIN_EVENT_TABLE(MyFrame_main, wxFrame)
	EVT_SIZE(MyFrame_main::onResize)
END_EVENT_TABLE()
 
IMPLEMENT_APP(Ini);
bool Ini::OnInit()
{
	MyFrame_main *frame = new MyFrame_main();
	frame->Show(TRUE);
 
	return true;
}
Et le main.h:
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
#ifndef WXRAD_MAIN_H
#define WXRAD_MAIN_H
 
#include <math.h>
#include <gl\glu.h>	
 
#include <wx/wx.h>
#include <wx/glcanvas.h>
 
class Ini: public wxApp
{
	public:
		virtual bool OnInit();
};
 
class MyFrame_main: public wxFrame
{
	public:
		MyFrame_main();
		void onResize(wxSizeEvent& event);
 
		void initialization();
		void drawScene();
	private:
		wxGLCanvas *MyGLCanvas;
		int width, height;
	protected:
		DECLARE_EVENT_TABLE()
};
 
DECLARE_APP(Ini);
 
#endif
Tout ce passe bien (l'application m'affiche un triangle) mais quand je redimentionne, la taille du wxGLCanvas ne semble pas bouger, pourquoi ?

NB: Je me suis inspiré de http://nehe.gamedev.net/data/lessons....asp?lesson=01 pour faire ce code.
NB2: Ce n'est que mon deuxième jour avec OpenGL...alors soyer simple dans vos explications si l'erreur vient d'OpenGl

Merci d'avance...