Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


OpenGL OpenGL Selection Hates My Code!

This topic is 5371 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have been able to use selection while drawing basic primitives but when I try it with my class that loads an MD2 file no matter how big or where on the screen the model is drawn it always says the mouse cursor is on top. I project the 3D Model so it can be drawn inside a 2D box and whenever I use this method is when stuff doesn''t work. Here''s the code that calculates the projection. void LoadMD2::Draw2D(int X,int Y,int Width,int Height,float D) { float XDist,YDist,XRatio,YRatio; Vectors3f Top,Bottom,Left,Right,Pos; glPushMatrix(); glLoadIdentity(); //================= // D is Depth // MouseToOpenGL converts 2D coords to 3D Top=MS.MouseToOpenGL(X+(Width/2),Y+Height,D); Bottom=MS.MouseToOpenGL(X+(Width/2),Y,D); Left=MS.MouseToOpenGL(X,Y+(Height/2),D); Right=MS.MouseToOpenGL(X+Width,Y+(Height/2),D); Pos=MS.MouseToOpenGL(X+(Width/2),Y+(Height/2),D); XDist=Left.Distance(Right); // Width of bounding area in 3D space YDist=Top.Distance(Bottom); // Height of bounding area XRatio=XDist/Model.ModelDimensions.X; // calculate how much YRatio=YDist/Model.ModelDimensions.Y; // to scale model to fit // choose lowest scale val so we keep scale proportional if(YRatio < XRatio) XRatio=YRatio; //===================== glTranslatef(Pos.X,Pos.Y,Pos.Z); glScalef(XRatio,XRatio,XRatio); Draw(); // draw Model glPopMatrix(); }

Share this post

Link to post
Share on other sites
It seems like whenever I use my MouseToOpenGL function while drawing something is when it doesn''t work.

I drew a line,triangle,quad,pentagon and sphere all using this
function and it did the same thing but when I typed in the vertices for the triangle by hand selection would work right with the triangle.

The function looks like this:

Vectors3f MouseShit::MouseToOpenGL(int X,int Y,float Z)
// DO NOT call this between glBegin & glEnd
GLdouble TempX;
GLdouble TempY;
GLdouble TempZ;
GLint Viewport[4];
GLdouble ModelView[16];
GLdouble Projection[16];
gluUnProject((GLdouble)X,(GLdouble)Y,(GLdouble)Z, ModelView,Projection,Viewport,&TempX,&TempY,&TempZ);
Vectors3f TempV((float)TempX,(float)TempY,(float)TempZ);

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!