gpt4 book ai didi

java - 我怎样才能不将纹理应用到模型的一部分?

转载 作者:行者123 更新时间:2023-12-01 21:48:43 25 4
gpt4 key购买 nike

我有一个简单的 16 x 16 网格,我在其中应用了单个纹理。纹理文件分为四个部分 - 每个部分都有不同的颜色。默认情况下,每个方 block 都是绿色的(文件的左上部分)。如果您单击一个正方形,我将应用红色部分(文件的右上部分)。现在我想让正方形在点击时完全消失。我想我可以使用透明纹理,但我希望不必这样做,以避免加载/重新加载两个不同的纹理文件。

这是我用来更新纹理 vbo 的代码:

  //I don't bother offsetting my changes.  I simply update the 'UVs'
//array and then copy the entire thing to the floatbuffer.
public void updateTexture(int offset)
{

//populate the texture buffer
//fbtex is a floatbuffer (16x16x8 in size). UVs is an array, same size.
fbtex.put( UVs );
fbtex.rewind();

glBindBuffer(GL_ARRAY_BUFFER, vboHandles.get(TEXTURE_IDX)); //the texture data
glBufferSubData(GL_ARRAY_BUFFER, offset, fbtex);
fbtex.clear(); //don't need this anymore
}

VBO 将包含最多 256 个我的绿色坐标实例:

public float[] UV_0 = { 0.02f,0.02f, 
0.02f,0.24f,
0.24f,0.24f,
0.24f,0.02f};

或者更少,如果包括一些我的红色坐标:

public float[] UV_1 = { 0.24f,0.02f, 
0.48f,0.02f,
0.48f,0.24f,
0.24f,0.24f};

我可以对 VBO 数据做些什么来绘制不可见的部分吗?例如,可以看到背景中的物体?

最佳答案

您可以不渲染 VBO 的部分内容。通常,您可以使用类似的内容绘制整个数据

glDrawArrays(GL_TRIANGLES, 0, numElements);

glDrawArrays采用 firstcount 参数,您可以使用它们仅渲染 VBO 的一部分。因此,如果您不想渲染某些数据,则可以在两次绘制调用中渲染该数据之前和之后的所有数据。

关于java - 我怎样才能不将纹理应用到模型的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35520030/

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