我在C#中用OpenTK编写程序,目前我试图在一组立方体上获得纹理。
我的问题是,当我使用给定纹理中有3个像素并将位图放入我的着色器到sampler2d时,它会在渲染时插入纹理的颜色而不是给我3条线,每边有3个颜色每个立方体。
要将它放入着色器,我使用的代码类似于this side上给出的代码。
这里是片段着色器中的确切代码:
#version 430 core
uniform sampler2D materialTexture;
in vec2 uvPos;
out vec4 color;
void main()
{
vec4 materialColor = texture2D(materialTexture, uvPos);
color = materialColor;
}
我需要做什么才能在没有插值的情况下在立方体上渲染图像? 在OpenTK中是否可以设置任何标志或调用来阻止这种情况?
答案 0 :(得分:4)
您需要对 放大 功能使用最近邻滤波。
这里有3x1纹理,需要放大才能在场景中拉伸。 OpenGL中的默认放大滤镜(GL_TEXTURE_MAG_FILTER
)为GL_LINEAR
,可插入四个最接近的纹素。
GL_NEAREST
将产生您想要的行为。缩小(当纹理分辨率太高时)在此处不适用,但也默认为线性过滤。