Bonjour a tous je suis en train de dévelloper un loader dans le cadre d'un projet openGL pour l'IUT et lorsque je le lance le debuger me renvoie un erreur que je n'avais encore jamais vu:
0xC0000096: Privileged instruction.

voici mon code:
CObjet3D.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
#include <iostream>
#include <vector>
#include <SFML\Window.hpp>	//pour l'utilisation d'openGL
using namespace std;
 
#ifndef COBJET3D_H
#define COBJET3D_H
 
class CObjet3D
{
private:
	char* fileName;
	vector<double> m_pVertexBuffer;
	vector<double> m_pFaceBuffer;
 
public:
	CObjet3D();
	CObjet3D(char* file);
	void Draw();
	vector<double> getVertexBuffer(){return m_pVertexBuffer;}
	vector<double> getFaceBuffer(){return m_pFaceBuffer;}
};
 
#endif //COBJET3D_H
CObjet3D.cpp
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
#include "CObjet3D.h"
#include <fstream>
#include <string>
 
using namespace std;
 
CObjet3D::CObjet3D()
{
	fileName = "\0";
}
 
CObjet3D::CObjet3D(char* file)
{
	fileName = file;
	ifstream fichier(fileName, ios::in);//ouverture du flux
 
	//si ouverture == OK
	if(fichier)
    {       
		string CurrentString = "\0";
		double CurrentCoord = 0.0;
		unsigned CurrentFace = 0;
 
		while(!fichier.eof())
		{
			fichier >> CurrentString;
			if(CurrentString == "v")
			{
				//X
				fichier >> CurrentCoord;
				m_pVertexBuffer.push_back(CurrentCoord);
 
				//Y
				fichier >> CurrentCoord;
				m_pVertexBuffer.push_back(CurrentCoord);
 
				//Z
				fichier >> CurrentCoord;
				m_pVertexBuffer.push_back(CurrentCoord);
			}
 
			else if(CurrentString == "f")
			{
				//1er vertex de la face
				fichier >> CurrentFace;
				m_pFaceBuffer.push_back(m_pVertexBuffer[CurrentFace]);
 
				//2eme vertex de la face
				fichier >> CurrentFace;
				m_pFaceBuffer.push_back(m_pVertexBuffer[CurrentFace]);
 
				//3eme vertex de la face
				fichier >> CurrentFace;
				m_pFaceBuffer.push_back(m_pVertexBuffer[CurrentFace]);
 
				//4eme vertex de la face
				fichier >> CurrentFace;
				m_pFaceBuffer.push_back(m_pVertexBuffer[CurrentFace]);
			}
		}
 
		fichier.close();//fermeture du flux
	}
}
 
void CObjet3D::Draw()
{
	for(unsigned i=0; i<m_pFaceBuffer.size(); i++)
	{
		glBegin(GL_QUADS);
			glVertex3f(m_pVertexBuffer[m_pFaceBuffer[i]],m_pVertexBuffer[m_pFaceBuffer[i+1]],m_pVertexBuffer[m_pFaceBuffer[i+2]]);
			i++;
			glVertex3f(m_pVertexBuffer[m_pFaceBuffer[i]],m_pVertexBuffer[m_pFaceBuffer[i+1]],m_pVertexBuffer[m_pFaceBuffer[i+2]]);
			i++;
			glVertex3f(m_pVertexBuffer[m_pFaceBuffer[i]],m_pVertexBuffer[m_pFaceBuffer[i+1]],m_pVertexBuffer[m_pFaceBuffer[i+2]]);
			i++;
			glVertex3f(m_pVertexBuffer[m_pFaceBuffer[i]],m_pVertexBuffer[m_pFaceBuffer[i+1]],m_pVertexBuffer[m_pFaceBuffer[i+2]]);
		glEnd();
	}
}
et enfin
main.cpp
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
#include "CObjet3D.h"
 
using namespace std;
using namespace sf;
void main()
{
	WindowSettings Settings;
	Settings.DepthBits         = 24; // Demande un Z-buffer 24 bits
	Settings.StencilBits       = 8;  // Demande un stencil-buffer 8 bits
	Settings.AntialiasingLevel = 2;  // Demande 2 niveaux d'anti-crénelage
 
	Window App(VideoMode(800, 600, 32), "SFML OpenGL", Style::Close, Settings);
 
	CObjet3D mon_obj("cube.obj");
	/////////////////////////////////
	//initialisation openGL
	/////////////////////////////////
 
    glClearDepth(1.f);
    glClearColor(0.f, 0.f, 0.f, 0.f);
 
    glEnable(GL_DEPTH_TEST);
    glDepthMask(GL_TRUE);
 
	gluLookAt(0,0,2,0,0,0,0,1,0);
 
	/////////////////////////////////
	//boucle principale
	/////////////////////////////////
	while (App.IsOpened())
	{
		 //gestion d'événements
        Event Event;
        while (App.GetEvent(Event))
        {
            //click sur la croix
            if (Event.Type == Event::Closed)
                App.Close();
 
            //touche échape
            if ((Event.Type == Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
                App.Close();
 
            //reshape
            if (Event.Type == Event::Resized)
                glViewport(0, 0, Event.Size.Width, Event.Size.Height);
        }
 
 
		//commande openGL
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
		mon_obj.Draw();
 
		App.Display();
	}
}
Si une âme charitable pouvait me tirer de ce mauvais pas je lui en serait reconaissante