微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在 jogl 中使用 TextureIO.newTextureData()

如何解决如何在 jogl 中使用 TextureIO.newTextureData()

我正在尝试创建透明纹理,但我不知道 newTextureData() 中的内部格式参数是什么。我尝试使用 GL4.GL_RGBA32F,但纹理仍然不透明。

代码看起来像这样:

//clear background (in a GameLoop class)
gl.glClearColor(0.0f,0.0f,0.2f,1.0f);
gl.glClear(gl.GL_COLOR_BUFFER_BIT);

//update sprite vao (method in Sprite class)
gl.glBindVertexArray(vao[0]);

gl.glBindBuffer(GL4.GL_ELEMENT_ARRAY_BUFFER,ebo[0]);
gl.glBindBuffer(GL.GL_ARRAY_BUFFER,vbo[0]);

gl.glBufferData(GL4.GL_ELEMENT_ARRAY_BUFFER,indexData.capacity() * 4L,indexData,GL4.GL_STATIC_DRAW);
gl.glBufferData(GL4.GL_ARRAY_BUFFER,vertexData.capacity() * 4L,vertexData,GL.GL_STATIC_DRAW);

int stride = (3 + vertexColorLength + 2) * 4;
int textureCoordsOffset = stride - 2 * 4;

gl.glVertexAttribPointer(0,3,GL.GL_FLOAT,false,stride,0);
gl.glEnabLevertexAttribArray(0);
gl.glVertexAttribPointer(1,vertexColorLength,12);
gl.glEnabLevertexAttribArray(1);
gl.glVertexAttribPointer(2,2,textureCoordsOffset);
gl.glEnabLevertexAttribArray(2);

gl.glBindVertexArray(0);
gl.glBindBuffer(GL4.GL_ELEMENT_ARRAY_BUFFER,0);
gl.glBindBuffer(GL4.GL_ARRAY_BUFFER,0);

//load textures (in Sprite constructor)
for (String path : texturePaths) {
  File textureFile = new File(path);
  TextureData textureData;

  try {
    textureData = TextureIO.newTextureData(gl.getGLProfile(),textureFile,GL4.GL_RGBA16,GL4.GL_RGBA,TextureIO.PNG);
    textures.add(TextureIO.newTexture(textureData));
  } catch (IOException e) {
    System.err.println("Failed to load Sprite texture");
    e.printstacktrace();
  }
}

//diplay Sprite (method in Sprite class)
program.setUniforms();
gl.glBindVertexArray(vao[0]);
program.use();
gl.glActiveTexture(GL.GL_TEXTURE0);
gl.gluniform1i(gl.glGetUniformlocation(program.ID,"u_texture0"),0);
textures.get(0).enable(gl);
textures.get(0).bind(gl);
gl.gluniform1i(gl.glGetUniformlocation(program.ID,"u_textureAmnt"),textures.size());
gl.glDrawElements(GL.GL_TRIANGLES,6,GL.GL_UNSIGNED_INT,0);
for(Texture texture : textures){
  texture.disable(gl);
}

解决方法

我忘记启用 Gl_Blend...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。