1

Salut

j'ai une question de débutant pour vous :

quand on utilise des fonctions OpenGL, est-ce que celles-ci bénéficient forcément de l'accélération matérielle ?
ou est-ce qu'il faut configurer certains paramètres ?

(J'ai fait une scène très basique et pourtant j'ai l'image qui clignote méchamment - sous WinXP et avec une GeForce4Ti4200)

2

clignotte? -> db!

3

Pour bénéficier de l'accéleration matérielle, il faut des drivers qui le supportent (pour ta GeForce les drivers sont ceux de http://www.nvidia.com).

En ce qui concerne le "clignotage" de l'image, il faut utiliser du double-buffering (JackosKing: en général db = database, ça ne va pas beaucoup l'aider grin).
So much code to write, so little time.

4

J'ai bien les bons drivers, pas de problème à ce niveau là (les Detonator 53.03 pour être précis smile )
et j'ai aussi pensé à activer le double-buffer

Ce que j'aimerais vraiment savoir, c'est si l'accélération matérielle est activée par défaut
sans qu'on ait rien à faire.
A priori, je pense que oui et c'est moi qui fait une mauvaise manip dans mon code, mais
j'aimerais en être sûr.

(D'ailleurs, par curiosité, comment faire pour ne pas avoir l'accélération matérielle ? je suppose qu'on doit pouvoir le préciser par une fonction OpenGL)

5

Est-ce que tu linkes avec les bonnes libraries OpenGl ? (Ie pas les libraries d'emulation soft d'opengl).

6


Je link avec glut32.lib et opengl32.lib (j'utilise Visual C++, et ces deux librairies font partie de celles par défaut)

et, à l'exécution, c'est la librairie dynamique nvoglnt.dll qui est utilisée (je le sais car j'ai essayé de lancer le programme sans et il la réclamait).
et nvoglnt.dll, c'est bien le driver OpenGL de nvidia.

7

tu fais bien du double-buffering ?
T'appelles ton swapbuffers et tout ?

8

Ce que j'aimerais vraiment savoir, c'est si l'accélération matérielle est activée par défaut sans qu'on ait rien à faire.


du moment que t'as la moindre accel materiele de dispo, oui. surtout sur une gf4ti4200 trioui.gif
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

9

sBibi > ok, c'est ce qui me semblait, mais je voulais etre sur.

spectras > j'active le double-buffer comme ça : glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
par contre, c'est quoi cette histoire de swapbuffers ?

10

lol... et gl il le devine comment le moment ou tu veux afficher?

et ton truc c'est surement pke tu dessine dans le front buffer et que tu swap pas triso

pour swapper tu dois faire un SwapBuffers(hdc); ou hdc est le handle de ton device context. vu que glut te donne sans doute pas le hdc, il doit avoir une fonction pour swapper les buffers... essaye glutSwapBuffers() ?

In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

11


ça je pensais que c'était automatique smile
donc, en effet, ça aide bien
et pour glut, c'est bien la fonction glutSwapBuffers()

cela dit, le rafraichissement est toujours très visible
et, chose étonnante, on voit "derrière" ma scène des textures d'un autre programme OpenGL que j'ai lancé juste avant
une explication ?

12

arf ! manque p-ê un flush ... mé c super zarb grin

13

il faut peut-etre penser à effacer les buffer d'ecriture de l'image sur la quelle tu trace ;p
Ancien pseudo : lolo

14

Ce buffer d'écriture n'est créé qu'à l'exécution de mon programme.
Donc comment est-il possible que je vois une texture d'un précédent programme ???

au passage, à quoi sert la fonction glDrawBuffer() ?
(j'ai du mal à comprendre ce que me dit la doc en anglais sur le sujet)