OpenGL-片段着色器中的tex坐标超出指定范围

问题描述 投票:0回答:1

我正在尝试在OpenGL中绘制带有纹理的矩形。我只是想渲染整个.jpg图像,所以我在顶点缓冲区中将纹理坐标指定为[0,0]到[1,1]。我希望片段着色器中所有插值的纹理坐标都在[0,0]和[1,1]之间,但是,根据绘制纹理的位置,有时我会得到小于0的纹理坐标(我知道之所以如此,是因为如果tex坐标小于0,我尝试从片段着色器输出红色。]

如何获得超出指定范围的插值?我目前可视化顶点/片段,如下图(https://learnopengl.com/Advanced-OpenGL/Anti-Aliasing):

enter image description here如果我想像一个矩形,那么如果像素样本位于矩形内部,则插值纹理坐标必须至少为0,因为矩形的最左侧表示0,对吗?那我怎么最终得到小于0的值?

编辑:经过一些基本的测试,如果形状只是与该像素相交,则看起来像是调用了片段着色器,而不是如果像素采样点在该形状内,则称为。我通过将矩形的起点放置在像素中间的稍稍之前和之后进行了测试-当在像素中间的稍稍之后时,我没有得到负值,但是如果我将其放置在像素的中间稍后,则我确实得到了负值。这与我链接到的网站所说的相矛盾-也许这取决于驱动程序?

编辑:我之前做的测试是使用多重采样。如果我关闭了多重采样,那么即使形状超过中间,也不会得到负值...

我正在尝试在OpenGL中绘制带有纹理的矩形。我只是想渲染整个.jpg图像,所以我在顶点缓冲区中将纹理坐标指定为[0,0]到[1,1]。我希望所有...

opengl
1个回答
0
投票

结果我只需要继续阅读链接的文章I

© www.soinside.com 2019 - 2024. All rights reserved.