Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Opengl 如何填充这个十六进制_Opengl - Fatal编程技术网

Opengl 如何填充这个十六进制

Opengl 如何填充这个十六进制,opengl,Opengl,我有一个六边形像这样做 glEnable(GL_TEXTURE_2D); //GRASS glTexImage2d(GL_TEXTURE_2D,Level,Colorcomps,sGrass,tGrass,Border,GL_RGB,GL_UNSIGNED_BYTE,background); glBegin(GL_POLYGON); for I := 0 to 6 do begin glVertex3f(COS(i/6.0*2*PI)/10+offsetx+0.2,

我有一个六边形像这样做

glEnable(GL_TEXTURE_2D);

//GRASS
glTexImage2d(GL_TEXTURE_2D,Level,Colorcomps,sGrass,tGrass,Border,GL_RGB,GL_UNSIGNED_BYTE,background);
glBegin(GL_POLYGON);
    for I := 0 to 6 do
    begin
      glVertex3f(COS(i/6.0*2*PI)/10+offsetx+0.2,SIN(i/6.0*2*pi)/10+offsety,-2);
    end;
glEnd;

我现在如何添加坐标以将纹理添加到该坐标?我以前做过的唯一方法就是为每一行设置它们如果可以参数化计算所需的纹理坐标,那么没有任何东西可以阻止您从循环内部调用
glTexCoord2f()


您应该在提交相应的
glVertex3f()
之前调用它。

将glTexCoord2f调用放入循环中,就在glVertex3f调用之上

要使用的坐标取决于所需的坐标。如果希望所有六边形具有相同的纹理,则为它们提供相同的纹理坐标。最简单的情况是一个正方形纹理,上面刻有六边形。电线应该是这样的:

glTexCoord2f(COS(i/6.0*2*PI)*0.5+0.5,SIN(i/6.0*2*PI)*0.5+0.5)


六边形跳线从-1到1,因此乘以0.5将使它们从-0.5到0.5。然后添加0.5使它们从0变为1,这就是标准化纹理坐标。

是的,但是如何计算坐标?