Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Choosepixelformat & Setpixelformat [ Archives / OpenGL ] (mondrone)

mercredi 6 juillet 2005 à 11:37:19 | Choosepixelformat & Setpixelformat

mondrone

Membre Club
Voila, je developpe actuellement sur dev-c++, et l'utilisation de ces deux fonctions me renvoie une erreur de linkage. Je voudrais donc savoir ce qui peut manquer à mon programme ou à mon projet pour qu'il fonctionne correctement.
P.S. : il s'agit d'un tutorial sur l'opengl.


#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>

HINSTANCE HInst;
HDC DC;
HGLRC RC;

/* Fonction qui associe le RC au DC*/

void SetupPixelFormat(HDC hDC)
{
   PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR), //taille du descripteur de format
1, //version
PFD_SUPPORT_OPENGL |
PFD_DRAW_TO_WINDOW |
PFD_DOUBLEBUFFER, //Propriété
PFD_TYPE_RGBA, //Mode de couleurs
16, //Bits de couleur
0, 0, 0, 0, 0, 0, //Paramètres des couleurs
0,0, //Paramètres alpha
0,0, 0, 0, 0, //Paramètres du buffer d'accumulation
32, //Bits de profondeur
0, //Bits du buffer stencil
0, //Nombre de buffers auxiliaires
0, //ignoré (obsolète)
0, //réservé/code>
0, //ignoré (obsolète)
0, //Couleur de transparence
0 //Ignoré (obsolète)
   };

   int pixelFormat;
pixelFormat = ChoosePixelFormat(hDC, &pfd);
if (!pixelFormat)
{

  

MessageBox
(
WindowFromDC(hDC),
"Mode graphique non supporté",
"Problème",
MB_ICONERROR | MB_OK
);
exit(1);
/*Vérifie si un PixelFormat du type demandé existe*/
}
if (!SetPixelFormat(hDC, pixelFormat, &pfd))
{   
  

MessageBox
(
WindowFromDC(hDC),
"Mode graphique non supporté",
"Problème",
MB_ICONERROR | MB_OK
);
exit(1);
/*Applique le PixelFormat. Arrête si erreur*/
}
}

/* Definition de la fonction WinProc qui sert au transit des messages*/

LRESULT CALLBACK WinProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam )
{
   switch(uMsg)
{
   case WM_CLOSE:

    wglMakeCurrent(NULL, NULL);
    if (RC) wglDeleteContext(RC);
    ReleaseDC(hwnd,DC);
    PostQuitMessage(0);
    break;

//Libère RC et DC et ferme le programme
case WM_CREATE:

    DC=GetDC(hwnd);
    SetupPixelFormat(DC);
    RC = wglCreateContext(DC);
    if (!RC) SendMessage(hwnd,WM_CLOSE,0,0);
    wglMakeCurrent(DC, RC);
    break;

//Récupère le DC et le RC
default:

    return DefWindowProc(hwnd,
    uMsg,
    wParam,
    lParam);
    break;

//Sinon, fait le truc habituel
   }
return 0;
}

//Fonction main en Windows : WinMain

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
/* Recup des infos venant de l'appelant*/
HInst = hInstance;

/* Definition de la classe fenêtre*/

WNDCLASS WindowClass =
{ 0, //Style
WinProc, //Procédure pour la gestion des messages
0, //octets supplémentaires à allouer à la classe
0, //octets supplémentaires à allouer à la fenêtre
HInst, //Handle du programme
0, //Icne
0, //Curseur
0, //Couleur d'arrière-plan
NULL, //Pointeur sur le menu associé à la classe
"La classe!" //Nom de la classe fenêtre
};
if (!RegisterClass(&WindowClass)) exit(1);


/* Création de la première fenêtre OpenGL*/
HWND OpenGLWindow = CreateWindow
( "La classe!", //Classe de la fenêtre
"Fenêtre OpenGL", //Nom de la fenêtre
WS_VISIBLE | WS_BORDER, //Caractéristiques
0, //Position x
0, //Position y
640, //Largeur
480, //Hauteur
0, //Handle de la fenêtre même
0, //Identifiant de la fenêtre fille
HInst, //HINSTANCE du programme
NULL /*Chaine de caractères envoyée
en paramètre lors de la création
de la fenêtre*/
);
if (!OpenGLWindow) exit(1);


/*Recup des messages venant de l'extèrieur et dispatching vers les differents processus !*/
MSG msg;
do
{
   while (PeekMessage(&msg,OpenGLWindow,0,0,PM_NOREMOVE))
{

    if(!GetMessage(&msg,OpenGLWindow,0,0)) exit(0);  // Le message WM_QUIT qui doit faire quitter le prog fait renvoyer 0 par GetMessage
    DispatchMessage(&msg);

}
}
while(1);
/* LOL : Pour la forme*/
return 0; //(pour la forme)
}

Sachant que les deux fichiers que j'ai inclus dans le projet sont :
libopengl32.a et libglu32.a

Merci d'avance !

mercredi 6 juillet 2005 à 11:50:15 | Re : Choosepixelformat & Setpixelformat

Joky

Membre Club
Il ne faut pas les inclure dans le projet ces fichiers...
Il faut les mettre au linker :)

Donc tu fais : Projet -> Options du Projet -> Paramètres -> Ajouter Fichier
Et voilà tu charges tes fichier opengl32 etc... et c'est bon normalement :)

void Aurevoir( void ); //Bonne journée


mercredi 6 juillet 2005 à 12:02:54 | Re : Choosepixelformat & Setpixelformat

mondrone

Membre Club
Je me suis mal exprimé, excuse moi, c'est ce que j'ai fait

mercredi 6 juillet 2005 à 17:26:59 | Re : Choosepixelformat & Setpixelformat

mondrone

Membre Club
Please !!!!! If someone could help me it would be very grateful !!!!!!!

ce sont bien les fichiers "libopengl32.a" et "libglu32.a" qu'il faut inclure dans la partie linker par l'intermédiaire de ajout de fichier ? Si c'est le cas c bien ce que g fait mais ya pas moyen ca marche pas !

Je ne pige pas...... Ca fait quelques tutos que j'essaye mais la seule chose que j'ai réussi a obtenir pour le moment en prenant les codes directement dans les tutos ce sont des erreurs de linkage ou des fenêtres noires lorsqu'il fallait afficher quelque chose. (a ce moment ct avec un tuto SDL).

mercredi 6 juillet 2005 à 21:04:44 | Re : Choosepixelformat & Setpixelformat

mondrone

Membre Club
Je pense avoir trouvé la réponse à ma question : il manquait la librairie "libgdi32.a" . Par contre de ça découle autre chose. Est-il normal que la fenêtre qui s'affiche recopie ce qui est derrière elle comme arrière fond (comme si elle étit transparent au moment du lancement uniquement) et que les bouton Alt+F4 qui sont, d'après le toturial activés, ne marchent plus mantenant que j'ai mis cette librairie (ils marchait avant) ?

mercredi 6 juillet 2005 à 22:35:32 | Re : Choosepixelformat & Setpixelformat

mondrone

Membre Club
Je tien a rectifier le tire : Alt-F4 fonctionne a première vue normalement une fois que j'ai bien selectionnée la fenetre opengl. Par contre je continue a n'avoir un affichage que par transparence !



Cette discussion est classé dans : fenêtre, hdc, dc, rc, pfd


Répondre à ce message

Sujets en rapport avec ce message

probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! Redimenssion de fenêtre et permanence de son contenu (V C++) [ par TahitiLove ] Bonjour,J'aimerai savoir comment peut on assurer la permanence du contenu d'une fenêtre.Je m'explique, j'ai créer un projet sous Visual C++ utilisant Device context et StretchBlt ? [ par tavernier ] Bonjour, je suis en train de faire un générateur de fractale et j'ai besoin de mettre la fractale de coté pour ne pas avoir à tout recalculer pour la Plusieurs contexte [ par charliejo ] Bonjour, J'ai le code suivant pour créer plusieurs context.   int pf, maxpf;    PIXELFORMATDESCRIPTOR pfd;    LAYERPLANEDESCRIPTOR&n Choisir le DC d'une fenêtre [ par vecchio56 ] Salut, Je voulais savoir si'il est possible de dessiner une fenêtre dans un device contexte spécifique? Par exemple, dessiner tous les fenêtre filles Problème saturation mémoire avec screenshot [ par sidhannowe ] Bonjour, Je réalise un screenshot régulièrement (ttes les 500ms) grace à un timer, le code qui génère le screenshot est le suivant:  HWND pWnd = Get Lenteur 3 [ par SAKingdom ] Pour résumé, j'ai fait une petite DLL graphique 2D et j'avais (et j'ai toujours) un problème écransant de lenteur. J'utilisait SetPixel (j'utilise tou Couleur de fenêtre [ par CyberP ] Comment changer la couleur d'arrière plan d'une fenêtre après l'avoir créée ?PAINTSTRUCT pps;HDC hdc;hdc = BeginPaint(hWnd, &pps);SelectObject(hdc, Cr pr d'objet GDI qui augmente, help [ par gege1024 ] CPaintDC hdc(this);HBITMAP bit;BITMAP bitmap;CRect rect;GetClientRect(&rect);  bit= (HBITMAP) LoadImage (NULL,fic_img_abs,IMAGE_BITMAP,0,0,LR_DEFAULTS [MFC] Probleme de récupération de HDC [ par phantom_2005 ] Bonjour à tousvoila je cherche à afficher  un bitmap dans un Picture box (IDC_Cadre) situé sur une fenêtre de dialogue (IDD_PROPPAGE5)Mes fonctions ma


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,25 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.