当前位置: 首页 > 知识库问答 >
问题:

OpenGL着色器sampler2D的默认值是什么

闻人越
2023-03-14

我对OpenGL和着色器都很陌生,我正在尝试向着色器发送多个纹理,在那里我注意到一些奇怪的东西。

这就是我所拥有的。我有一个碎片着色器,看起来像这样。

#version 440 core

in vec3 vs_position;
in vec3 vs_color;
in vec2 vs_texcoord;
in vec3 vs_normal;

out vec4 fs_color;

uniform sampler2D texture0;
uniform sampler2D texture1;


void main() {
    fs_color = texture(texture0, vs_texcoord) * texture(texture1, vs_texcoord);
}

在某个时候,我停止了为texture1发送数据,但我忘记了从着色器中删除代码。很明显,这是一个bug,程序没有按预期工作,但我注意到,与我修复代码并从着色器中删除texture1相关内容时相比,当我有这个bug时,颜色看起来更深,没有那么平坦。

共有1个答案

唐增
2023-03-14

默认情况下,采样器绑定到纹理单元0。我想您得到的外观可能是,您还将纹理单元0附加到texture0中,基本上是将纹理与其本身相乘。

 类似资料:
  • OpenGL的渲染管线分为几个步骤。一个简单的OpenGL渲染管线将包含一个顶点着色器和一个片段着色器。 顶点着色器接收顶点数据,并且在程序最后赋值给gl_Position。然后,顶点将会被裁剪,转换和栅格化后作为像素输出。 片段(像素)进入片段着色器,进一步对片段操作并将结果的颜色赋值给gl_FragColor。顶点着色器调用多边形每个角的点(顶点=3D中的点),负责这些点的3D处理。片段(片度

  • 我似乎无法理解从顶点到像素的OpenGL管道过程。 有人能告诉我顶点法线在这两种着色技术中有多重要吗?据我所知,在gouraud中,在每个顶点计算照明,然后在顶点之间的多边形上插值结果颜色(在光栅化之前,这是在片段操作中完成的吗?),phong着色包括首先插值顶点法线,然后计算每个法线上的照明。 另一件事是,当凹凸贴图应用于一个平面(2个三角形)和一个砖纹理作为漫反射时,使用其相应的凹凸贴图,所有

  • Kubernetes的pods(部署)活跃性和就绪性问题可以用这个初始延迟来配置----这意味着问题将在容器启动后的这多次发送之后开始。如果没有指定,默认值是多少?我好像找不到了。periodSeconds的默认值记录为10秒。 谢谢

  • 我是OpenGL的新手,在整理如何将纹理和着色器绑定到VBOs时遇到了困难。 我正在使用Cinder的纹理和着色器类。以下是我绘制方法的一部分: 在上面的代码中,如果我注释掉对mShader的调用。bind(),我的球体VBO将显示纹理(myImage)。我的着色器适用于普通(无纹理)形状,但当我在绘制任何带有包裹纹理的形状之前绑定着色器时,它会阻止纹理显示。 这是我使用的着色器的问题,还是我不理

  • 我正在尝试实现现代OpenGL,但问题是:大多数教程都是基于3.3的,说到GLSL330,我只有GLSL130。因此,许多事情显然是不同的,因为我的VBO不起作用。 你能给我一个一般的提示或教程,解释如何使用GLSL 130与VBO的?在我的例子中,我加载了vbo,但是当我使用我的着色程序时,只有用glVertex调用的顶点被渲染,就像vbo被忽略(没有输入)。这个怎么解决? 你能在没有着色器的情