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;
我现在如何添加坐标以将纹理添加到该坐标?我以前做过的唯一方法就是为每一行设置它们因为这是一个for循环,所以我不能这样做。还有别的办法吗?或者我必须删除for循环吗?如果可以参数化计算所需的纹理坐标,那么没有任何东西可以阻止您从循环内部调用
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,这就是标准化纹理坐标。是的,但是如何计算坐标?