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 为什么在使用sampler2D在曲面上渲染纹理后对其进行插值_Opengl_Glsl_Textures_Opentk - Fatal编程技术网

Opengl 为什么在使用sampler2D在曲面上渲染纹理后对其进行插值

Opengl 为什么在使用sampler2D在曲面上渲染纹理后对其进行插值,opengl,glsl,textures,opentk,Opengl,Glsl,Textures,Opentk,我正在用C#中的OpenTK编写一个程序,目前我试图在一组立方体上获得纹理 我的问题是,当我使用包含3个像素的给定纹理,并将位图放入我的着色器中,使其成为一个二维采样器时,它会在渲染时对纹理的颜色进行插值,而不是在每个立方体的每一侧给我3条带3种颜色的线 为了将其放入着色器中,我使用了与上给出的代码类似的代码 下面是我的片段着色器中的确切代码: #version 430 core uniform sampler2D materialTexture; in vec2 uvPos; out v

我正在用C#中的OpenTK编写一个程序,目前我试图在一组立方体上获得纹理

我的问题是,当我使用包含3个像素的给定纹理,并将位图放入我的着色器中,使其成为一个二维采样器时,它会在渲染时对纹理的颜色进行插值,而不是在每个立方体的每一侧给我3条带3种颜色的线

为了将其放入着色器中,我使用了与上给出的代码类似的代码

下面是我的片段着色器中的确切代码:

#version 430 core

uniform sampler2D materialTexture;

in vec2 uvPos;

out vec4 color;

void main() 
{
    vec4 materialColor = texture2D(materialTexture, uvPos);
    color = materialColor;
}
此处,图像用作gimp中显示的纹理:

这里是当前的结果

我要怎么做才能在立方体上渲染图像而不进行插值?
OpenTK中是否有可以设置的标志或调用来防止出现这种情况?

您需要对放大功能使用最近邻过滤

这里有一个3x1纹理,需要放大以在场景中拉伸。OpenGL中的默认放大过滤器(
GL\u纹理\u MAG\u过滤器
)是
GL\u线性
,它插值四个最近的纹理


GL\u NEAREST
将产生您想要的行为。缩小(当纹理分辨率太高时)不适用于此处,但也默认为线性过滤。

。。。如何使用这种过滤模式?显然,我知道答案,但我的观点是OP甚至不知道过滤模式是什么。所以他可能不知道如何设置它们。@Nicolas:Search me,问题是讨论一个显然封装了纹理加载的特定框架。我选择只解释搜索所需的术语。