【发布时间】:2015-06-28 02:28:09
【问题描述】:
我有以下声明:
glBegin( GL_QUADS );
glColor3f(0.0f,0.7f,0.7f);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glVertex2f(x4,y4);
glEnd();
问题是:如果我应用旋转,比如说 20 度,那么我怎么知道这些顶点在哪里? 因为稍后我需要能够点击方格并确定我点击的位置是否确实在方格内。
【问题讨论】:
-
你不能在 CPU 上对你的顶点做同样的转换吗?一般来说,弄清楚“点击了什么”是一个棘手的问题,在文献中有不同的解决方案(射线三角形相交,使用不同的颜色绘制所有内容,然后用于查找等)。获取顶点/after/顶点变换的问题也很棘手;现代 OpenGL 允许您通过 Transform Feedback 来实现,但您的代码是 OpenGL 1.x-ish,所以忘记这一点。
-
“在 CPU 上对顶点进行相同的转换”是什么意思? @佩佩
-
这里的问题是您使用的是非常老式的 OpenGL(2 或更早版本)。现代 OpenGL 有变换反馈和其他好东西。要在 CPU 端进行转换,您可以根据需要使用 glm 之类的库。