2015-08-23 60 views
0

我有一个简单的纹理多边形与位图图像纹理。围绕纹理多边形旋转相机,同时看着它 - OpenGL

glEnable(GL_TEXTURE_2D); 
    glBindTexture(GL_TEXTURE_2D, _textureId); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); 
    glColor3f(1.0f, 1.0f, 1.0f); 
    glBegin(GL_QUADS); 

    //Front face 

    glNormal3f(0.0, 0.0f, 1.0f); 
    glTexCoord2f(0.0f, 0.0f); 
    glVertex3f(-BOX_SIZE/2, -BOX_SIZE/2, BOX_SIZE/2); 
    glTexCoord2f(1.0f, 0.0f); 
    glVertex3f(BOX_SIZE/2, -BOX_SIZE/2, BOX_SIZE/2); 
    glTexCoord2f(1.0f, 1.0f); 
    glVertex3f(BOX_SIZE/2, BOX_SIZE/2, BOX_SIZE/2); 
    glTexCoord2f(0.0f, 1.0f); 
    glVertex3f(-BOX_SIZE/2, BOX_SIZE/2, BOX_SIZE/2); 

    glEnd(); 

我想围绕物体旋转,所以它会直接面对我。 我该如何改变相机的位置?

+0

您可以使用[gluLookAt](https://www.opengl.org/sdk/docs/man2/xhtml/gluLookAt.xml)函数。 – ProXicT

+0

我非常新的opengl,我不知道如何正确使用glulookat。你能帮我一下吗? – Ransar

+0

希望我的答案清除它。 – ProXicT

回答

0

在OpenGL中,您可以使用gluLookAt函数在空间中移动。

将相机想象成空间中的一个点。
前3个参数确定您的位置。
接下来的3个参数决定了相机看起来的另一个空间点。

在这里,我由一个画面:(卡通人物从here拍摄) How gluLookAt works

在图片中,你可以看到一个人站在位置pos.x,pos.y,pos.z期待在某点(红点)look.x,look.y,look.z;

upVec只是一个决定头部方向的矢量。

thisCarlos Scheidegger简要解释了upVec做:

在gluLookAt“向上”矢量背后的直觉很简单:看看 什么。现在将您的头部倾斜90度。你在哪里没有改变, 你正在看的方向没有改变,但你的 视网膜中的图像明显有。有什么不同?你的头顶 指向哪里。这是向上的向量。

在大多数情况下,您希望将upVec设置为(0,1,0),因为在大多数情况下,这是您头部的方向。