【问题标题】:LWJGL 3 failing to render textures properly with slick-util compatible version with LWJGL 3LWJGL 3 无法使用与 LWJGL 3 的 slick-util 兼容版本正确渲染纹理
【发布时间】:2020-09-08 02:27:46
【问题描述】:

我最近开始用 LWJGL 3 重写我的游戏,它是如此不同。 我试着寻找教程,这个人使用了这个与 LWJGL 版本 3 兼容的 slick-util。 我按照教程看了将近 3 遍 30 分钟的教程,但无法弄清楚哪里出了问题,我查看了它的 github 存储库,仍然无法弄清楚为什么我无法正确加载纹理。

这是使用我的代码 渲染的纹理外观

这是他的教程的 github 存储库 enter link description here

这是教程视频 enter link description here

跳到时间戳:32:02

我真的需要帮助,我尝试了一整天,但无法正常工作! 让我知道是否有必要共享代码,因为也许你们中的一个人可能已经有这个错误并且已经知道解决方案。 谢谢

【问题讨论】:

  • 我还想提一下,我复制了他的纹理坐标,所以它们与他的 Github 中的完全一样!

标签: java opengl render game-engine lwjgl


【解决方案1】:

顶点规范与着色器程序的属性索引不匹配:

pbo = storeData(positionBuffer, 0, 3);
// [...]
cbo = storeData(colorBuffer, 1, 3);
// [...]
tbo = storeData(textureBuffer, 2, 2);

你的顶点着色器:

#version 460 core

in vec3 position;
in vec3 color;
in vec2 textureCoord;

out vec3 passColor;
out vec2 passTextureCoord;

void main() {
  gl_Position = vec4(position, 1.0);
  passColor = color;
  passTextureCoord = textureCoord;
}

你的片段着色器

#version 330 core

in vec3 passColor;
in vec2 passTextureCoord;

out vec4 outColor;

uniform sampler2D tex;

void main() {
  outColor = texture(tex, passTextureCoord);
}

属性索引不会自动枚举 (0, 1, 2, ...)。属性color 甚至没有获得属性索引,因为它不是活动的程序资源。 color 设置为接口变量passColor,但片段着色器中未使用该变量。因此,该着色器程序只有 2 个活动属性,并且未指定该属性的属性索引。可能position 的索引为 0,textureCoord 的索引为 1(大多数硬件驱动程序都会这样做),但您不能确定这一点。

Layout Qualifier (GLSL) 用于Vertex shader attribute indeices

#version 460 core

layout(location = 0) in vec3 position;
layout(location = 1) in vec3 color;
layout(location = 2) in vec2 textureCoord;

// [...]

【讨论】:

  • 非常感谢我明天会测试它非常感谢您的帮助,我会担心没有人会帮助,但只需要等待几个小时。
  • @purplex 如果代码未在答案中发布,则很难提供帮助。它不打算在异地资源中提供源代码。注意,这个问题会留在这里,但是 github 存储库将来还会在那里吗?如果您需要帮助,您必须将相关代码添加到问题中。其他用户可能会否决并投票以结束您的问题。你很幸运我花时间。
  • @purplex 请阅读What should I do when someone answers my question? 并考虑accept the answer,您认为对您最有帮助。
猜你喜欢
  • 2015-06-09
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多