gpt4 book ai didi

java - JOGL - 向对象添加纹理 - 仅黑色对象

转载 作者:行者123 更新时间:2023-12-01 13:00:33 25 4
gpt4 key购买 nike

我如何向 Java Open GL 中的对象添加纹理(尤其是 AndAR)...我的代码有什么问题?我读了几个例子,但总是一样的,只有一个“黑色矩形”或纹理绑定(bind)在背景上......我如何将它绑定(bind)到我的矩形?

这是我的代码:

  int[] textureIDs = new int[1];
gl.glEnable(GL10.GL_TEXTURE_2D);

gl.glGenTextures(1, textureIDs, 0);
//load the textures into the graphics memory


Bitmap bm = BitmapFactory.decodeResource(CustomActivity.context.getResources(), R.drawable.icon);

gl.glBindTexture(GL10.GL_TEXTURE_2D, textureIDs[0]);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bm,0);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);




GLUT.glutSolidBox(gl,200.0f,100.0f,10.0f);

最佳答案

为了使texturinh产生有用的效果,您将需要纹理坐标来告诉GL纹理的哪一部分要映射到图元的哪一部分。由于您使用的是固定功能管道,因此有两种选择:

  1. 为几何图元提供每个顶点的纹理坐标,或者
  2. 使用自动纹理坐标生成。

GLUT 对象从不提供任何纹理坐标。这意味着 OpenGL 将为每个顶点使用当前设置的纹理坐标。这将导致仅对单一特定纹理位置进行一次又一次采样 - 它不必是黑色,但您的对象将是均匀着色的。

您可能会倾向于选择选项 2,即自动纹理坐标生成,该生成由 `glTexGen() 控制。函数族。然而,可用的纹理坐标生成模式都不适合对立方体进行纹理处理。

所以唯一真正的解决方案是手动指定立方体顶点,并指定有用的纹理坐标。您从未指定您想要的映射。纹理是一个矩形图像,您可以将其映射到每个面,我们可能希望将图像的不同子矩形映射到每一侧 - 并且您必须告诉 GL 如何映射它,它不能我猜这只是因为您绘制了 6 个面并启用了纹理。

or the texture is bound on the background.

当您想要绘制无纹理时,您需要再次禁用纹理。

关于java - JOGL - 向对象添加纹理 - 仅黑色对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23546265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com