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

仅Java OpenGL蓝色纹理

商焕
2023-03-14

我有一个纹理和OpenGL的小问题。我做了个小的。obj加载器(带纹理加载)但是所有东西都是蓝色的。示例:

我加载一个纹理。我将纹理与GL11.glBindTexture(GL11.GL_TEXTURE_2D,texureId)绑定。如果我这样做了:

    glColor3f(1f,1f,1f);
    glBegin(GL_QUADS);
    glVertex3f(50f,0,-50);
glVertex3f(-50f,0,-50f);
glVertex3f(-50f,0,50f);
glVertex3f(50f,0,50f);
glEnd();
    GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);

它画了一个白色的四边形...但是如果我这样做:

    GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureId);
    glColor3f(1f,1f,1f);
    glBegin(GL_QUADS);
    glVertex3f(50f,0,-50);
glVertex3f(-50f,0,-50f);
glVertex3f(-50f,0,50f);
glVertex3f(50f,0,50f);
glEnd();

它画了一个蓝色的四边形,其他的都是蓝色的。

也许有人知道解决方案

共有2个答案

龙俊德
2023-03-14

这是一个问题,因为您没有对每个顶点使用glTexCoord2f。请对每个顶点尝试此操作,因为它可以解决它,因为当前您的颜色没有绑定到所有区域。

康赞
2023-03-14

没有纹理,因为您没有使用glTexCoord2f指定纹理坐标。

颜色错误,可能是由于glTexImage参数不正确。

其他的都是蓝色的,因为你对所有的东西都使用了相同的纹理。绑定不同的纹理或使用默认纹理0。

 类似资料:
  • 我的问题是,我无法正确读取存储在只有红色分量的纹理中的值。我的第一个实现导致了缓冲区溢出。所以我读了openGL参考资料,它说: 如果选定的纹理图像不包含四个组件,则应用以下映射。单组分纹理被视为RGBA缓冲区,红色设置为单组分值,绿色设置为0,蓝色设置为0,α设置为1。双分量纹理被视为RGBA缓冲区,红色设置为分量零的值,α设置为分量一的值,绿色和蓝色设置为0。最后,三个组件纹理被视为RGBA缓

  • 如何在平面上滚动纹理?所以我有一个平面有一个纹理,我可以使用一个着色器滚动左从右(无限)的纹理上?

  • 之前用过了静态的纹理设置材质,这次来尝试一下动态的变换,这次来尝试颜色变换 先创建工程,步骤略 添加一个管线,参考官方示例Polyline Volume,每个示例的代码,都用一下,说不定学到点新东西呢~ (#^.^#) 这里按理说应该是要给纹理赋值了,要它动态变化,一般有两种思路,其一是赋值一次,然后之后用代码(定时器)动态修改材质,其二是使用回调,在上一篇鹰眼图中尝试过,发现回调效果比较好,不会

  • 项目: 不多说了 数据库 1、让我用语言说一个 SQL (关于连表查询的+排序——一定要搞懂题目,这个简单不多说了) Golang 1、go 的并发机制 2、go 聊天室设计 计算机基础 1、http 和 https 的区别 2、短链接和长连接区别是什么

  • 我在学《欢乐合唱团》。0(我是一个新手:))在Android上,我想画一个有纹理的正方形,但我做不到。我在谷歌上搜索了很多,但我想不出答案,我只得到了一个黑色的正方形。 我设置了一个GLSurfaceView,然后是一个渲染器: 雪碧类: ShaderLoader。loadShader从文件(以res/raw格式)TextureLoader加载着色器。loadTexture从资源中加载纹理: 顶点

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