OpenGL et glscissor

lacerto84 Messages postés 9 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 5 décembre 2004 - 3 déc. 2004 à 13:40
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 6 déc. 2004 à 18:55
Salut,
Je réalise un pacman en 3D et j'aurais besoin d'aide.
Je voudrais splitter mon écran en 2.
J'ai vu qu'il existait une fonction glscissor mais je n'ai trouvé aucun exemple sur le net.
Est-ce que quelqu'un pourrait m'aider.
Merci d'avance.

9 réponses

Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
3 déc. 2004 à 20:27
Je ne sais pas utilsier glScissor, néanmoins une autre possibilité de splitter ton écran serait de rendre la scène 2 fois par frame, en utilisant 2 viewports différents (avec glViewport).

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
4 déc. 2004 à 21:28
glScissor (GLint x, GLint y, GLsizei width, GLsizei height);

ca c'est pratique pour faire les rétroviseurs dans les jeux de bagnole... et d'avion ,qui sait, Funto? :)
x et y c'est le coin en haut a gauche
widh, height: la taille de la zone.

la fonction définit une zone dans laquelle opengl dessinera, (ou ne dessinera pas? je sé + :( ), et rien ne sera dessiné dans le reste.
Donc, tu fais scissor sur tout l'écran, tu mets ta caméra, tu dessines, tu fais scissor sur ton rétro, tu redessines ( bouh) et avec beaucoup de chance ca marche...t'as qu'à adapter ca a la moitié de l'ecran...
je crois que c'est la méthode utilisée par cppdupdup dans sa source de jeu dee voiture zarbi, tu te souviens funto? d'ailleurs moi aussi je la cherche, elle m'arangerait bien...

fais nous part de tes découvertes avec ces 2 fonction ok?
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
4 déc. 2004 à 21:39
Description

The glScissor routine defines a rectangle, called the scissor box, in
window coordinates. The first two arguments, x and y, specify the lower
left corner of the box. width and height specify the width and height of
the box.

The scissor test is enabled and disabled using glEnable and glDisable with
argument GL_SCISSOR_TEST. While the scissor test is enabled, only pixels
that lie within the scissor box can be modified by drawing commands.
Window coordinates have integer values at the shared corners of frame
buffer pixels, so glScissor(0,0,1,1) allows only the lower left pixel in
the window to be modified, and glScissor(0,0,0,0) disallows modification
to all pixels in the window.

When the scissor test is disabled, it is as though the scissor box includes
the entire window.
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
4 déc. 2004 à 21:52
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 déc. 2004 à 12:00
Ah ok je ne m'étais jamais renseigné sur cette fonction, merci :)
N'empêche que je pense que glViewport est mieux approprié pour un mode multijoueurs. En revanche, glScissor() serait plutôt pratique pour dessiner une vue à l'intérieur d'un avion par exemple (un exemple au hasard, si si ! :p) : on ne dessine le cockpit qu'une fois (tableau de bord etc) et on ne change que ce que l'on voit à travers la vitre...:)

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
5 déc. 2004 à 17:37
il y a qd meme une différence majeure entre les 2 fonctions:
glScissor() ne modifie pas le viexport, ce qui fait de si tu fait glscissor sur une zone de 10*10 pixels, ce n'est pas toute l'image qui sera affichée dans ce petit carré, juste une petite partie. c'est comme si tu affichais normalement, puis que tu coloriais en noir tout ce qui b'est pas dans cete zone.
glVieport est donc effectivement le plus approprié pour du 2 joueurs.
par contre je sais pas si ce que tu proposes marche, peut etre que glClear ne tient pas compte du scissor, et dans ce cas tu dois tout redessiner a chaque fois... :-(
a voir.
a propos, que devient coucous flingueurs, surtout maintenant que dupdup a momentanément arreté? les screenshots sont pas mal... il datent de quand?
0
lacerto84 Messages postés 9 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 5 décembre 2004
5 déc. 2004 à 21:02
Merci pour votre aide.
0
Funto66 Messages postés 1267 Date d'inscription mercredi 1 janvier 2003 Statut Membre Dernière intervention 28 février 2007 4
5 déc. 2004 à 21:39
Ben le site a pas évolué depuis la news (sic :(), donc les screens datent de cette même époque. Ce n'est pas abandonné, ça sera juste repris plus tard ^^

Quant à ce que je disais, c'est en fait un souvenir qui m'est revenu du red book d'OpenGL, donc je pense bien que ça doit être faisable ^^

Sinon, lacerto84, je suis sûr que glViewport est approprié pour ce que tu veux faire, c'est ce que j'utilise en ce moment (pour une histoire de modeleur 3D, mais pas encore assez avancé...^^).

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
0
Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 2
6 déc. 2004 à 18:55
ben vi on est d'accord c'est ce que je viens de dire ^^
0
Rejoignez-nous