什么是OpenGL挑选(OpenGL® Picking)?

OpenGL®picking在计算机编程中是指一旦场景被渲染,确定三维(3D)场景中的对象位于屏幕上给定点的过程。它也可以指在一个点或一个框内定位多个对象。通常,OpenGL®picking用于确定屏幕上的3D对象用户正试图用鼠标光标进行...
OpenGL®picking在计算机编程中是指一旦场景被渲染,确定三维(3D)场景中的对象位于屏幕上给定点的过程。它也可以指在一个点或一个框内定位多个对象。通常,OpenGL®picking用于确定屏幕上的3D对象用户正试图用鼠标光标进行选择。虽然此操作看起来很简单,但OpenGL®渲染场景的方式有几个微妙之处,会使场景变得相当复杂。此外,某些图形卡和驱动程序中存在固有的问题,可能会导致OpenGL®拾取功能失败并返回false结果:OpenGL拾取是指在一个三维场景中,当场景被渲染后,确定哪个对象位于屏幕上给定的点上的过程。当用户在计算机监视器上观看3D场景时,产生的图像被称为场景的渲染。场景实际上以原始形状或多边形的集合形式存储在内存中,这些基本形状或多边形本身就是场景空间中三维点的集合。计算机使用世界坐标(有时称为绝对坐标)来执行最基本的功能在大多数应用程序中,用户可以将场景的视图调到不同的角度,以便可以从不同的角度看到对象。用户在场景中的虚拟位置称为摄影机角度或摄影机位置。OpenGL®拾取的复杂性来自于从可能是场景中任意的位置和角度,摄像机的位置。另外,由于从人类观众的角度来看,渲染是真实的2D,用户无法提供场景内部鼠标点击的深度OpenGL®picking函数通过两种方式解决了这个复杂的问题。第一种方法是,它不是执行一系列单独的计算来转换观察者的抽象位置,然后在渲染窗口中找到一个对象,而是像正常工作时一样渲染场景,除了不显示用于选择的渲染外,它只用于计算对象的正确位置。区别在于,它没有渲染用户可以看到的整个区域,它只渲染鼠标所在的区域,这意味着渲染的对象在技术上都是在鼠标指针所在的点上,第二个问题,即无法表示所选区域的深度,通过返回场景中鼠标坐标下的所有对象来解决。OpenGL拾取函数返回数组中的所有对象以及它们与查看器位置的距离。这允许程序在需要时快速找到最近的对象。可视化OpenGL®拾取的一种方法是想象线,在3D编程中有时被称为光线,它从鼠标指针的位置移动到场景中,远离观看者的位置。光线接触到的每个对象都被添加到一个对象数组中,以及它离观看者的距离。这是一个非常简单的解释,解释了一种形式的OpenGL®拾取是如何工作的。OpenGL®中的另一种对象拾取方法涉及到通过颜色定位对象,而且速度可以快得多。这种方法可以渲染场景,但不是对对象应用照明和纹理,而是对对象应用照明和纹理取而代之的是用一种简单的颜色渲染。每个对象或一组对象都有自己不同的颜色。场景只在内存中渲染而不显示,因此这不会影响用户看到的内容而不是寻找对象之间的三维碰撞,而是返回鼠标光标所在位置的颜色,该颜色将与特定对象相关联
  • 发表于 2020-08-07 20:30
  • 阅读 ( 720 )
  • 分类:电脑网络

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
admin
admin

0 篇文章

作家榜 »

  1. xiaonan123 189 文章
  2. 汤依妹儿 97 文章
  3. luogf229 46 文章
  4. jy02406749 45 文章
  5. 小凡 34 文章
  6. Daisy萌 32 文章
  7. 我的QQ3117863681 24 文章
  8. 华志健 23 文章

推荐文章

联系我们:uytrv@hotmail.com 问答工具