那么NURBS和opengl 4.2内核呢?
What about NURBS and opengl 4.2 core?
红皮书中的NURBS章节表示已弃用,包括实用程序库:"即使其中一些功能是 GLU 库的一部分,它依赖于已从核心 OpenGL 库中删除的功能。
这是否意味着OpenGL 4.2实际上缺乏C++用于操作NURBS曲线和曲面的工具包?有一些商业的第三方工具包,但它们不是跨平台的(主要是Windows)
...?
在 OpenGL-3 及更高版本中,您可以使用几何体和顶点着色器,OpenGL-4 甚至提供镶嵌着色器。它们提供了实现 GPU 加速 NURBS 和贝塞尔样条和曲面的一切。OpenGL-1.1的评估器从未在大多数硬件上进行GPU加速。所以实际上没有他们你会过得更好。
只需在着色器中实现 NURBS 或贝塞尔赋值器,并将顶点作为表面采样点发送即可。
关于你关于红皮书的问题,GLU库并没有被OpenGL ARB正式弃用,只是被忽略了。 但是,GLU 使用了在 OpenGL 3.0 中弃用并在 OpenGL 3.1 中删除的功能:即时模式渲染、显示列表、矩阵堆栈等等。 具体到NURBS,他们使用了其中的几个功能(假设与OpenGL实现相关的GLU库是基于SGI版本的GLU,大多数都是),因此功能在核心上下文中不起作用。 这并不是缺少基于C++的GLU库,而是GLU使用了从现代OpenGL中删除的功能。
@datenwolf - 不完全是。 GLU NURBS 库支持修剪曲线,这在所有情况下使用 OpenGL 顶点着色器管道(即仅顶点、细分和几何着色)都很难实现。 具体来说,在尊重修剪曲线交叉的同时支持缠绕规则和正确的修剪是非常困难的(通过计算着色器和片段着色器中的花哨工作的组合可能是可能的)。 您可以使用 alpha 纹理进行修剪,但会遇到混叠结果,但这是一个快速解决方案。
- 如何在内核C++中使用1920x1080x16M图形或类似的16M颜色?(VGA)
- CUDA内核和数学函数的显式命名空间
- 码头化的C++应用程序是否向后兼容早期的内核版本
- C++内核出现Jupyter笔记本错误
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 内存围栏是否涉及内核
- 将 2D 推力::d evice_vector 复矩阵传递给 CUDA 内核函数
- OpenCL 内核参数中的字符***?
- 具有可分离内核的 2D 模糊卷积
- 如何在Windows内核中获取文件大小
- 库达如何将字符**从内核复制到主机
- 定义/预设NURBS起点和终点的方向
- OpenCL 是否支持向量作为内核参数?
- pthread_spinlock是否会导致从用户空间切换到内核空间
- 如何在内核中添加包含库的路径?
- openCL 内核返回垃圾值,尽管没有错误
- OpenCL 内核计时测量 0 秒或导致 SIGABRT
- Visual Studio 如何在内核模式驱动程序项目中使用C++标准库?
- 分段错误(内核转储) C++面向对象编程
- 那么NURBS和opengl 4.2内核呢?