gpt4 book ai didi

java - 如何对 GL_TRIANGLE_STRIP 进行纹理处理?

转载 作者:太空宇宙 更新时间:2023-11-04 06:34:36 25 4
gpt4 key购买 nike

我有一些 GL_TRIANGLE_STRIP 基元,它们的绘制方式如下:

glNewList(heightmapDisplayList, GL_COMPILE);
for (int z = 0; z < data.length - 1; z++) {
glBegin(GL_TRIANGLE_STRIP);
for (int x = 0; x < data[z].length; x++) {
glVertex3f(x, data[z][x], z);
glVertex3f(x, data[z + 1][x], z + 1);
}
glEnd();
}
glEndList();

我将如何纹理这个?我很容易知道如何对诸如 GL_QUADS 之类的东西进行纹理处理,但我不知道在哪里放置带有三角形带的 glTexCoord2f() 调用(以及迭代等)。

我使用lwjgl,所以用java回答会很好。

最佳答案

指定图元每个顶点的纹理坐标:对于每次调用 glVertex3f,都应该有一个对 glTexCoord2f 的匹配调用。关于纹理坐标的实际值,这取决于您想要实现的目标。一种简单的方法是从用于三角形 strip 的索引导出 2D 纹理坐标 (s, t)。下面是一个实现此功能的示例:

glNewList(heightmapDisplayList, GL_COMPILE);
for (int z = 0; z < data.length - 1; z++) {
glBegin(GL_TRIANGLE_STRIP);
// The t texture coordinate for z and z + 1
float t0 = (float)z / (data.length - 1); // t0 in [0,1]
float t1 = (float)(z + 1) / (data.length - 1); // t1 in [0,1]
for (int x = 0; x < data[z].length; x++) {
// The s texture coordinate for x
float s = (float)x / (data[z].length - 1); // s in [0, 1]
glTexCoord2f(s, t0);
glVertex3f(x, data[z][x], z);
glTexCoord2f(s, t1);
glVertex3f(x, data[z + 1][x], z + 1);
}
glEnd();
}
glEndList();

关于java - 如何对 GL_TRIANGLE_STRIP 进行纹理处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25593630/

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