如何在openGl的中心绘制2D对象?

时间:2014-11-12 21:39:13

标签: opengl graphics

我需要在屏幕中央的2d画一个三角形并在中心旋转它只使用被动鼠标操作任何参考代码?

void myDisplay(void)
{
    glClear(GL_COLOR_BUFFER_BIT); // clear the screen

    glBegin(GL_TRIANGLES);
        glVertex2i(100, 50); // draw three points
        glVertex2i(100, 130);
        glVertex2i(150, 130);
    glEnd();

    glFlush();

这是图像和三角形:

http://i.stack.imgur.com/zsQTt.png

1 个答案:

答案 0 :(得分:0)

假设我们有一个三角形,其中一个顶点位于屏幕的中心(NDC = [0,0]),它沿x轴对称。让三角形指向鼠标的问题不是找到从屏幕中心到鼠标位置的矢量与x轴([1,0])之间的角度的问题。执行此操作的解决方案如下所示:

Vec2 mousePosition = queryMousePositionAsDoneInYourAPI();
float angle = acos(dot(normalize(mousePosition - [width/2, height/2]), [1,0]));

glLoadIdentity();
glRotatef(angle, 0,0,1);

glBegin();
drawTriangle
glEnd();