【发布时间】:2015-01-28 01:08:57
【问题描述】:
您好,我编写了一个程序来创建多边形。在我的程序中,您可以单击两个或更多区域,我的程序将第一个点与第二个连接,第二个与第三个连接等。如果我右键单击,那么最后一个点将与第一个点连接,然后是我的多边形准备好了。现在我想移动我的多边形的一个顶点。诸如拖放之类的东西。我开始写这段代码:
void move(GLint button, GLint action, GLint xPosition, GLint yPosition){
screenCoordinates newCoord;
if (button == GLUT_LEFT_BUTTON && action == GLUT_UP) {
for (int i = 0; i <= position; i++){
if ((xPosition == vertexCoord[0][position] + 5 || xPosition == vertexCoord[0][position] - 5) && ((yPosition == vertexCoord[1][position] + 5 || yPosition == vertexCoord[1][position] - 5)))
//....
}
}
}
我有 +-5,因为很难准确地点击一个顶点。我还有一个包含所有顶点的数组(vertexCoord[2][200])。现在我该如何移动我的顶点?
【问题讨论】:
-
这取决于您如何管理顶点数据。 OpenGL 不会为您这样做。它只是一个渲染 API。
-
我的所有顶点数据都在表 vertexCoord[2][200] 中。在 vertexCoord[0][i] 我有 xPosition 在 vertexCoord[1][i] 我有 yPosition
-
好吧,只需更改您的数据并重新绘制场景。
-
顶点 + 着色器 + 矩阵 = 利润!
标签: c++ opengl graphics polygon glut