Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用OpenGL在vram中存储三角形纹理_Opengl_Language Agnostic_Graphics_3d - Fatal编程技术网

用OpenGL在vram中存储三角形纹理

用OpenGL在vram中存储三角形纹理,opengl,language-agnostic,graphics,3d,Opengl,Language Agnostic,Graphics,3d,有没有什么方法可以存储和绘制三角形纹理而不必创建矩形缓冲区(并且使用两倍于我需要的存储空间) (我知道我可以将许多三角形打包成一个大的矩形纹理,但我想看看是否有一种方法可以做到这一点,而不必浪费任何空间或编写复杂的打包算法)没有,但您可以尝试使用此相当简单的算法来展开纹理UV,如下所示: |\ |1\ |__\ | \ | 2 \ ------- _____ | \1| | 2 \| ------- 通过切割三角形(1)的顶部并将其放置在底部(2)附近的自由空间中来创建矩形壶纹

有没有什么方法可以存储和绘制三角形纹理而不必创建矩形缓冲区(并且使用两倍于我需要的存储空间)


(我知道我可以将许多三角形打包成一个大的矩形纹理,但我想看看是否有一种方法可以做到这一点,而不必浪费任何空间或编写复杂的打包算法)

没有,但您可以尝试使用此相当简单的算法来展开纹理UV,如下所示:

|\
|1\
|__\
|   \
| 2  \
-------

 _____
|   \1|
| 2  \|
-------

通过切割三角形(1)的顶部并将其放置在底部(2)附近的自由空间中来创建矩形壶纹理。

据我所知,OpenGL和任何扩展都不支持您所寻找的内容。

对于这种情况,通常的做法是将多个奇数形状打包到单个矩形纹理上(它们需要彼此分离,以便采样不会从相邻形状中溢出颜色…。如果您对三角形使用多个纹理,您可能也可以这样打包它们


如果您只有一个纹理,那么浪费空间可能是最简单的——很可能您的应用程序不是特别占用资源?

好吧,创建的不连续性肯定会在以后的纹理制作中造成麻烦。当然,可以基于直接纹理访问实现片段着色器,并进行插值和过滤手动抖动。是的。这种解决方案需要某种程度的自动化。例如,可以提前生成贴图/多边形。似乎没有其他解决方案,因为没有硬件支持三角形纹理;)什么是“矩形缓冲区?”@NicolBolas常规纹理(矩形或方形)。