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

OpenGL

赫连开畅
2023-03-14

我试图在屏幕上显示灰度纹理。我通过

glGenTextures(1, &heightMap);
glBindTexture(GL_TEXTURE_2D, heightMap);
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 512, 512, 0, GL_RED, GL_FLOAT, colorData);

colorData是一个浮点数[512*512],其值介于0.0和1.0之间。

渲染时,我使用:

glBindTexture(GL_TEXTURE_2D, heightMap);
glUniform1i(shader.GetUniformLocation("textureSampler"), 0);

着色器。GetUniform位置是我们在大学使用的库的一个函数。它本质上与glGetUniform位置(着色器,“文本采样器”)相同,所以不要被它迷惑。

我通过三角形条渲染两个三角形。我的片段着色器是:

#version 330
layout(location = 0) out vec4 frag_color;
in vec2 texCoords;
uniform sampler2D textureSampler;

void main()
{
    frag_color = vec4(texture(textureSampler, texCoords).r, 0, 0, 1);
}

我知道三角形的渲染是正确的(例如,如果我使用vec4(1.0,0,0,1)作为frag_颜色,我会得到一个完全红色的屏幕)。然而,有了上面这一行,我只得到了一个完全黑屏。每个纹理值似乎都是0.0。

有人知道我做错了什么吗?这几行代码中是否有错误,或者这些代码是否完全正确,错误是否在其他地方?

共有1个答案

东方海
2023-03-14

正如下面的一条评论所说,设置glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);和glTexParameteri(GL_纹理2D、GL_纹理MAG_过滤器、GL_线性);解决问题。:)

 类似资料:
  • 问题内容: 我正在尝试用更快的opengl- es表面替换我已经拥有的基于Canvas的渲染系统,但是,我似乎无法让openGL渲染器以其充当2d字段的方式进行兼容,而不是透视图。 我当前的渲染器代码如下所示: 我将如何设置渲染器,以使平移变换与屏幕上的像素匹配?(因此,将5向右平移会将其移动5个像素) 问题答案: 请注意,在openGL中,Y坐标是倒置的。否则,一切都是一样的。 至于正确的标志,

  • 问题内容: 我想在Linux中打开不带X的OpenGL上下文。有什么办法吗? 我知道集成英特尔图形卡硬件是可能的,尽管大多数人的系统中都装有Nvidia卡。我想要一个适用于Nvidia卡的解决方案。 如果除了通过集成的Intel硬件没有别的方法,我想知道如何使用这些硬件是可以的。 X11协议本身太大且太复杂。它提供的鼠标/键盘/平板电脑输入多路复用对于现代程序来说太过淡了。我认为这是阻止Linux

  • 问题内容: 我正在玩纸牌游戏,目前拥有良好的基础,但是在eclipse中运行它时遇到了错误。我也使用光滑的2d。 这是来自控制台的错误。 线程“主”中的异常java.lang.RuntimeException:在当前线程中找不到OpenGL上下文。在org.lwjgl.opengl.GLContext.getCapabilities(GLContext.java:124)在org.lwjgl.op

  • 问题内容: 我正在寻求了解VBO的帮助。我已经做了大量研究,并找到了关于该主题的教程,但是它们对我来说仍然很模糊。我有几个问题: 一个VBO应该在哪里创建,我应该如何创建一个? 我目前正在使用下面的代码初始化我的顶点和索引缓冲区: 如果我是正确的话,这不是在创建VBO。因此,如果我想制作一个VBO,创建VBO的代码会紧接在上面列出的代码之后吗?如果是这样,它将如何创建? 另外,如何将VBO渲染并绘

  • 问题内容: 如标题所示,我似乎无法使用OpenGL和Glut构建项目。 我收到OpenGL函数的未定义参考错误。 我试着做: 但这是行不通的。 有什么建议么? 问题答案: 会为您找到软件包,但不会将软件包链接到目标。 要链接到库,可以使用。此外,您还需要设置,以便链接器知道在哪里寻找东西。这是通过完成的。 一个执行此操作的示例如下所示: 如果对于您的项目是必要的,则可以考虑在之后进行测试,或使用,

  • 问题内容: 我正在尝试通过Nehe指南来学习OpenGL并提高我的C ++技能,但是所有示例均适用于Windows,而我目前使用的是Linux。我真的不知道如何使事情在Linux下工作,并且已经移植到Linux的网站上的代码中还有很多未解释的代码(到目前为止,我唯一要做的就是工作就是SDL示例:http : //nehe.gamedev.net/data/lessons/linuxsdl/less

  • 问题内容: 我正在学习有关使用OpenGL在Java中创建游戏引擎的教程。 我正在尝试在屏幕上渲染一个三角形。一切运行正常,我可以更改背景颜色,但三角形不会显示。我也尝试过运行作为教程系列的一部分提供的代码,但仍然无法正常工作。 链接至教程:http : //bit.ly/1EUnvz4 链接到视频中使用的代码:http : //bit.ly/1z7XUlE 建立 我试过检查OpenGL版本,但相

  • 问题内容: 从gluOrtho角度看,我已经在OpenGL中渲染了3D场景。在我的应用程序中,我正在查看体积为100x70x60mm(我为1000x700x600像素)的立方体的正面。在此立方体内部,我绘制了一个简单的蓝色球体,该球体恰好位于中间并“填充”立方体(半径300像素)。 现在,我想读取立方体内特定点的像素的颜色值(以3D表示);即我想知道说点(100,100,-200)是蓝色还是空白(