le mouvement de la souris opengl
Je suis entrain de créer un jeu de billard écrit en C++ à l'aide de la plaine OpenGL (pas d'outils externes), mais je peux utiliser GLUT. J'ai dessiné une queue de billard qui je veux suivre le curseur de la souris mais je ne suis pas sûr de la façon de le faire.
Je sais comment utiliser l'entrée de clavier pour faire bouger les choses.e.g la position de la caméra ou de dessiner un objet, mais je
m pas sûr de la façon de déplacer un objet à l'aide de la souris.
C'est le signal que je suis en train de déplacement par l'intermédiaire de la souris:
void cue () {
glBegin;
glTranslatef(-10,5,0);
glRotatef(90,0,1,0);
glutSolidCone(0.25, 15, 20, 20);
glEnd();
}
Vouliez-vous dire de la file d'attente quand vous dites de repère? Je n'ose pas pour le modifier.
non, c'est censé être de repère...le nom de la clé que vous utilisez dans le snooker ou pool 🙂
queue de billard
S'il vous plaît ne pas utiliser glutSolidCone, c'est maladroit. Aussi je vous suggère de rester à l'écart de la GLU. Les deux GLU et GLUT sont sérieusement désuet, presque personne n'utilise de nos jours. GLUT n'est pas une partie de OpenGL BTW (ni est GLU, mais ils ont tendance à expédier en commun).
Il y a une question très semblable ici: stackoverflow.com/questions/5835372/moving-a-pool-cue Est-ce, par hasard, un devoir à la maison?
non, c'est censé être de repère...le nom de la clé que vous utilisez dans le snooker ou pool 🙂
queue de billard
S'il vous plaît ne pas utiliser glutSolidCone, c'est maladroit. Aussi je vous suggère de rester à l'écart de la GLU. Les deux GLU et GLUT sont sérieusement désuet, presque personne n'utilise de nos jours. GLUT n'est pas une partie de OpenGL BTW (ni est GLU, mais ils ont tendance à expédier en commun).
Il y a une question très semblable ici: stackoverflow.com/questions/5835372/moving-a-pool-cue Est-ce, par hasard, un devoir à la maison?
OriginalL'auteur DK10 | 2011-04-20
Vous devez vous connecter pour publier un commentaire.
Glut a quelques souris fonction de rappel
Rappel de la souris
Le mouvement de rappel
Vous pouvez utiliser la fonction de rappel pour comprendre le mouvement de la souris, le reste est de la pure mathématique.
OriginalL'auteur Kien Truong
NeHe est un tutoriel qui couvre les bases de la rotation en OpenGL: http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=04
Si vous souhaitez faire pivoter autour d'un autre point de voir Comment faire pour modifier le Centre de Rotation en OpenGL . Essentiellement, il revient à ceci:
Également utiliser glPushMatrix/glPopMatrix ou glLoadIdentity pour isoler les transformations.
OriginalL'auteur LumpN
Pour la clarification: OpenGL n'est ni une modélisation de la bibliothèque, pas un graphe de scène. Tout ce que OpenGL n'est à jeter des points, des lignes et des triangles à une image de la mémoire tampon.
Afin de le faire uniquement avec OpenGL n'est pas possible. Vous aurez besoin d'une sorte de modélisation de code pour créer des modèles de triangles. Faites-vous une faveur et:
Toute simulation physique (et de votre piscine jeu nécessite un) a besoin d'accéder à des objets de la géométrie. Et comme déjà mentionné OpenGL n'est pas le modèle, donc, tout ce que vous dessinez avec OpenGL, juste de l'envoyer à OpenGL va pas la rendre accessible à une simulation physique.
Votre code est faux de toute façon: Seul sommet spécification appels sont autorisés entre
glBegin(...)
etglEnd()
. Vos appels deglRotate
,glTranslate
etglutSolidCone
ne sont pas autorisées.Eh bien, je ne sais pas comment le dire, mais celui qui vous a donné cette contrainte sur l'affectation est un idiot alors. Pourquoi: Parce que de forcer les gens à code de leurs objets donne une très mauvaise idée de comment utiliser OpenGL. Si votre professeur insiste sur vous à l'aide de GLU ou de la SURABONDANCE de dessiner des trucs que vous pouvez lui donner mon adresse de courrier électronique "opengl-dev (at) wolfgang-draxinger (dot) net", il peut aussi Google "Wolfgang Draxinger OpenGL". Dites-lui: "GLUT est obsolète et GLU ne fonctionne pas avec OpenGL 3 et plus tard", et de refuser d'apprendre des choses, vous ne serez pas en bénéficier à l'avenir, ne vous une faveur.
BTW: Que votre code dessine quelque chose, c'est parce que vous n'êtes pas en train d'appeler glBegin. La déclaration que vous avez écrit, il y a tout juste evalates le pointeur vers la fonction glBegin, puis, aussitôt, il se défait. Vous devez appeler glBegin(GL_TRIANGLES) pour faire du sens.
OriginalL'auteur datenwolf
utiliser une variable globale qui garde la position du curseur de la souris et ensuite l'utiliser dans les deux fonctions.
variables globales semblent être le seul moyen de communiquer entre les différentes fonctions requises par surabondance. Pour ce faire sans eux semble très difficile compte tenu de la structure actuelle de l'opengl/glut.
OriginalL'auteur tp1