gpt4 book ai didi

c++ - 使用 OpenGL 旋转正方形后能否获取其顶点?

转载 作者:行者123 更新时间:2023-11-28 02:24:54 25 4
gpt4 key购买 nike

我有以下声明:

glBegin( GL_QUADS );
glColor3f(0.0f,0.7f,0.7f);
glVertex2f(x1,y1);
glVertex2f(x2,y2);
glVertex2f(x3,y3);
glVertex2f(x4,y4);
glEnd();

问题是:如果我应用旋转,比方说,旋转 20 度,我怎么知道这些顶点在哪里?因为稍后我需要能够单击正方形并确定我单击的位置是否确实在正方形内部。

最佳答案

虽然我希望在这个千年里没有人使用过它,但实际上有一种机制可以在遗留 OpenGL 中获取转换后的顶点。它被称为“反馈模式”。详细解释它超出了答案的范围。但如果您想了解它是如何工作的,您可以在免费提供的在线版本 Red Book 中阅读它。 .

您在问题中所说的“点击并识别”通常称为“挑选”或“选择”。实现它的方法有很多种,选择哪种方法在某种程度上取决于您的应用程序。让您快速了解一些常用方法:

  • 选择模式。这几乎和反馈模式一样过时了。它一样古老,但我感觉它至少更常用,所以它可能有更好的支持。不过,我不建议在新代码中使用它。同样,如果您想了解它,可以在 Red Book 中找到解释。 .

  • 现代 OpenGL 具有称为变换反馈的功能。虽然其主要目的不同,但它可用于回读类似于传统反馈模式的转换后的顶点。

  • 将场景绘制到屏幕外缓冲区,每个对象都以不同的颜色呈现。然后读回选择位置的颜色,并将其映射到一个对象。这是一种相当优雅和高效的方法,如果它符合您的要求,可以推荐。

  • 在 CPU 上用您自己的代码执行计算。不是变换所有对象,更有效的方法通常是将逆变换应用于您的拾取点(实际上变成了一条射线),并将其与几何体相交。

关于c++ - 使用 OpenGL 旋转正方形后能否获取其顶点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31091286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com