小编Kan*_*jiu的帖子

如何在opengl中正确升级纹理?

让我们说,为了简化这个问题,我想创建一个包含从黑色到红色的颜色渐变的纹理.我知道有更简单的方法来实现这一点,但它是我的问题的一个很好的例子.

我想,我可以简单地从浮点数组创建一个纹理,如下所示:

float values[4] {
    0.f, 1.f,
    0.f, 1.f
}

// gen texture
unsigned int texId;
glGenTextures(1, &texId);
glBindTexture(GL_TEXTURE_2D, texId);

// set filter and wrap
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);

// copy values
glTexImage2D(GL_TEXTURE_2D, 0, GL_R32F, 2, 2, 0, GL_RED, GL_FLOAT, values);
Run Code Online (Sandbox Code Playgroud)

并绘制它:

float vertices[8] {
    -1.f, -1.f, 0.f, 0.f,
     1.f, -1.f, 1.f, 0.f,
     1.f,  1.f, 1.f, 1.f,
    -1.f,  1.f, 0.f, 1.f
}

// generate vertex buffer, vertex buffer layout and vertex array …
Run Code Online (Sandbox Code Playgroud)

c++ opengl textures glsl

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

标签 统计

c++ ×1

glsl ×1

opengl ×1

textures ×1