【发布时间】:2014-10-20 18:13:16
【问题描述】:
我想在opengl 中绘制一个立方体,当我们按下它的面时,我可以改变视图(例如在Unity3D,Autocad),这是两个软件的一些图像:
这是我尝试过的:
void GLWidget::drawViewCube(float x, float y, float z, float t, float posX, float posY){
glBegin(GL_QUADS);
//std::cout << " x : " << x << ", y : " << y << ", z : " << z;
glVertex3f(x+posX+t,y+posY-t,z+t);
glVertex3f(x+posX-t,y+posY-t,z+t);
glVertex3f(x+posX-t,y+posY+t,z+t);
glVertex3f(x+posX+t,y+posY+t,z+t);
glVertex3f(x+posX+t,y+posY+t,z+t);
.
.
.
// Just drawing a cube
}
这就是我所说的:
drawViewCube(-depX,-depY,-zoom-590, 0.5, -0.03 * height(), 0.03 * width());
所以我把它画成一个普通的立方体,但我用depX 和depY(这是我的相机的位移)和zoom 让它跟随相机。有了这个,立方体跟随我的相机并始终保持在同一位置(这是我们想要的,对吗?)当我们用height() 和width() 扩展窗口时,我也试图让它留在窗口内,但这并没有真正起作用,当我扩展窗口时它不会停留在某个地方(右上角)但这不是最大的问题,真正的问题是当我旋转我的相机时......
我认为我应该尝试使用我的视图的矩阵进行绘制,这样我就可以让它留在同一个地方,但我不擅长 opengl ... 所以如果有人对这件事有任何想法,请告诉我。
PS : 我现在只想画立方体,我会考虑如何让按下它改变视图。
【问题讨论】:
-
让它完全忽略相机并单独应用旋转可能更容易
-
是的,但正如我所说,我不太擅长使用 View Matrix,如果你能解释我如何做到这一点,那将很有帮助