【发布时间】:2015-10-12 15:32:24
【问题描述】:
我想创建一个纹理以应用于 Torus,如下所示:
这是我刚开始写的代码:
void initMyProceduralTexture() {
GLubyte image[64][64][3];
int i, j, c, r, g, b;
glGenTextures( 1, &textureName[NUM_TEXTURES - 1] );
glBindTexture(GL_TEXTURE_2D, textureName[NUM_TEXTURES - 1]);
for(i=0;i<64;i++) {
for(j=0;j<64;j++) {
float a = floor(i * 8.0);
float b = floor(j * 8.0);
if (fmod(a,b) > 0.5 ) {
image[i][j][0]= (GLubyte) 255.0;
image[i][j][1]= (GLubyte) 127.5;
image[i][j][2]= (GLubyte) 127.5;
}
else {
image[i][j][0]= (GLubyte) 153.0;
image[i][j][1]= (GLubyte) 153.0;
image[i][j][2]= (GLubyte) 255.0;
}
}
}
glTexImage2D(GL_TEXTURE_2D,0,3,64,64,0,GL_RGB,GL_UNSIGNED_BYTE, image);
...
但我不知道如何区分蓝色部分和红色部分以及如何设置该图像矩阵。我查看了this 站点,这就是我将比例设置为 8.0 的原因... 你能帮忙吗? 这就是我使用该代码得到的结果:
【问题讨论】:
-
但我不知道如何区分蓝色部分和红色部分 - 你能改写一下吗?我不知道这意味着什么。我认为
fmod等式看起来也很可疑,但也许其中有一些魔力。 -
对不起...我的意思是我不知道何时以及如何绘制蓝色矩形以及如何以及何时绘制红色矩形...只是,我不知道该写什么在图像矩阵内部:(
-
你知道怎么做(你发布的代码就是这样做的)。如果有的话,你不知道何时。
-
我认为它不起作用,因为我没有得到我在该图片中发布的结果......我得到了一些奇怪的东西
-
我刚刚添加了另一张图片...