【问题标题】:How to move vertices in opengl如何在opengl中移动顶点
【发布时间】: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


【解决方案1】:

您可能想研究使用矩阵变换。有很多教程教授如何在 Modern OpenGL (3.3+) 中执行此操作。

我个人非常喜欢Open.GL,但我有一些朋友和教授更喜欢OpenGL-Tutorial

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 2023-03-24
    • 1970-01-01
    • 2016-05-04
    相关资源
    最近更新 更多