标签: multitexturing

OpenGL 3.3多重纹理:GL_TEXTURE1及以下总是黑色(只有GL_TEXTURE0可以正常工作)

GL_TEXTURE0(插槽0上的纹理)之后的每个纹理都是黑色.

片段着色器(通过更改权重来检查不同纹理的示例代码):

#version 330

uniform sampler2D g_ColorTex;
uniform sampler2D g_DepthTex;
uniform sampler2D g_DofNearBlurTex;
uniform sampler2D g_DofDownBlurTex;

in vec4 g_VertexPosition;
in vec2 g_ScreenCoords;

layout (location = 0) out vec4  FragColor;

void main() 
{
    // Changing weights to check textures
    FragColor  = 1.00001f * vec4(texture(g_ColorTex      , g_ScreenCoords).rgb, 1.0f);
    FragColor += 0.00001f * vec4(texture(g_DepthTex      , g_ScreenCoords).rgb, 1.0f);
    FragColor += 0.00001f * vec4(texture(g_DofNearBlurTex, g_ScreenCoords).rgb, 1.0f);
    FragColor += 0.00001f * vec4(texture(g_DofDownBlurTex, g_ScreenCoords).rgb, 1.0f);
}
Run Code Online (Sandbox Code Playgroud)

我上传这样的纹理(摘录!):

::glUseProgram(ShaderHandle);

unsigned int TextureIndex;


TextureIndex = ::glGetUniformLocation(ShaderHandle, "g_ColorTex");

::glUniform1i(TextureIndex, 0); …
Run Code Online (Sandbox Code Playgroud)

opengl textures glsl texture2d multitexturing

6
推荐指数
1
解决办法
6498
查看次数

glTexEnvi(OpenGL ES 1.x)的任何不完整的描述?

我看到了许多与我看到的源代码不同的参数.是否可以在某处找到详细描述这些参数的描述

opengl iphone blending multitexturing

5
推荐指数
1
解决办法
3080
查看次数

OpenGL:关闭多个纹理单元

如何关闭多个纹理单元,因为它们会影响其他渲染部件.我激活他们:

        glActiveTexture(GL_TEXTURE0 + index);
        glBindTexture(GL_TEXTURE_2D,
               ((MaterialSampler2D)specular).texture.getTOB());
        shader.setTexture2(index);
Run Code Online (Sandbox Code Playgroud)

有没有类似glDeactivateTexture的东西?

opengl textures multitexturing

5
推荐指数
1
解决办法
6288
查看次数

OpenGL多重纹理-glActiveTexture为NULL

我已经开始一个新项目,我想在其中使用多重纹理。我之前已经进行了多重拉伸,并且受我的OpenGL版本支持

在标题中,我有:

GLuint  m_TerrainTexture[3];//heightmap, texture map and detail map
GLuint  m_SkyboxTexture[5]; //left, front, right, back and top textures

PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
PFNGLACTIVETEXTUREARBPROC   glActiveTexture;
Run Code Online (Sandbox Code Playgroud)

在构造函数中,我有:

glActiveTexture = (PFNGLACTIVETEXTUREARBPROC) wglGetProcAddress((LPCSTR)"glActiveTextureARB");
glMultiTexCoord2fARB = (PFNGLMULTITEXCOORD2FARBPROC) wglGetProcAddress((LPCSTR)"glMultiTexCoord2fARB");

if(!glActiveTexture || !glMultiTexCoord2fARB)
{
    MessageBox(NULL, "multitexturing failed", "OGL_D3D Error", MB_OK);
}

glActiveTexture( GL_TEXTURE0_ARB );
...
Run Code Online (Sandbox Code Playgroud)

这将显示消息框“多纹理处理失败”,并且glActiveTexture的内容为0x00000000

当它到达glActiveTexture(GL_TEXTURE0_ARB); 我收到访问冲突错误

我正在实现MVC图,所以这一切都在我的Terrain View类中

c++ opengl multitexturing

5
推荐指数
1
解决办法
3945
查看次数

具有不同uv坐标的OpenGL ES 1多纹理

我需要使用多纹理渲染对象,但两个纹理对同一个对象都有不同的uv坐标.一个是法线贴图,另一个是光贴图.

请提供有关此的任何有用的材料.

opengl-es multitexturing ios

5
推荐指数
1
解决办法
3389
查看次数

OpenGL,GL_MODULATE和Multitexturing

我已经成功绘制了一个多纹理多边形,但不幸的是,只有整个纹理区域使用了重叠纹理的第一个像素.

这是纹理(GL_TEXTURE0和GL_TEXTURE1):

图标 覆盖

结果是这样的:

结果

仅使用顶部的红色像素.我试过在顶部只有一个1x1蓝色像素,我得到了与蓝色叠加相同的结果.

我的代码:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDisableClientState(GL_COLOR_ARRAY);

const CGPoint vertices[] = {
    ccp(0,0),
    ccp(100,0),
    ccp(0,100),
    ccp(100,100),
};

// This will flip the image for us as well
const CGPoint coordinates[] = {
    ccp(0,1),
    ccp(1,1),
    ccp(0,0),
    ccp(1,0),
};

// Config multitextures
glClientActiveTexture(GL_TEXTURE0);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, icon.name);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); 
glTexCoordPointer(2, GL_FLOAT, 0, coordinates);
glEnable(GL_TEXTURE_2D);

glClientActiveTexture(GL_TEXTURE1);
glActiveTexture(GL_TEXTURE1);
glBindTexture(GL_TEXTURE_2D, overlay.name);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glTexCoordPointer(2, GL_FLOAT, 0, coordinates);
glEnable(GL_TEXTURE_2D);

GLubyte points = 4;

// Draw the square
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_TRIANGLE_STRIP, 0, …
Run Code Online (Sandbox Code Playgroud)

opengl-es texturing multitexturing

5
推荐指数
1
解决办法
5350
查看次数

在OpenGL中如何在GPU上访问纹理数据?

我不完全理解在GPU上访问纹理数据的方式.如果可能的话 - 有人能解释一下吗?

  1. 当纹理单元的数量有限时,这是否会限制我可以使用生成的纹理数量glGenTextures()并使用上传到GPU glTexImage2D()?或者它只限制可以绑定的纹理单元的数量glBindTexture()

  2. 我真正想做的是能够将我的所有纹理上传到GPU - 即使有超过可用纹理单元的数量.当需要纹理时,我只需使用它将其绑定到纹理单元glBindTexture().这可能吗?

opengl texture-mapping glteximage2d multitexturing

5
推荐指数
1
解决办法
352
查看次数

LibGDX SpriteBatch Multitexture可能吗?

我很高兴使用LibGDX Framework的SpriteBatch类.我的目标是通过着色器修改精灵的表示.

batch = new SpriteBatch(2, shaderProgram);
Run Code Online (Sandbox Code Playgroud)

我从SpriteBatch类中复制了默认着色器,并添加了另一个统一的Sampler 2d

+ "uniform sampler2D u_Texture2;\n"//
Run Code Online (Sandbox Code Playgroud)

是否有一种工作方式将纹理赋予着色器.这样做,总是在ClearColor屏幕中结束.

batch.begin();
  texture2.bind(1);
  shaderProgram.setUniformi("u_Texture2", 1);
  batch.draw(spriteTexture,positions[0].x,positions[0].y);
  batch.draw(spriteTexture,positions[1].x,positions[1].y);
batch.end();
Run Code Online (Sandbox Code Playgroud)

每个纹理都在工作.在Mesh类的帮助下手动绘制按预期工作.那么我该怎么做才能使用SpriteBatch的便利呢?

THX寻求帮助

android multitexturing opengl-es-2.0 libgdx spritebatch

5
推荐指数
1
解决办法
2904
查看次数

如何在着色器中引用纹理?

快速OpenGL新手问题.我在片段着色器中有这一行:

uniform sampler2D mytexture;
Run Code Online (Sandbox Code Playgroud)

我深入研究了我正在使用的示例代码,我找不到任何引用mytexture; 只发现调用激活纹理单元并将纹理绑定到之前复制到GPU的纹理.

我的问题是,片段着色器如何知道我使用的唯一纹理必须通过mytexture

我会想到的

glBindTextureToUniform(texture_id, "mytexture");
Run Code Online (Sandbox Code Playgroud)

或类似的必须被称为.

opengl graphics shader textures multitexturing

3
推荐指数
2
解决办法
188
查看次数