本人在学习OpenGl时,按书上例子却无法得到正确的纹理(其实纹理根本未显示),请高人解答!(150分)

  • 主题发起人 主题发起人 王心惟
  • 开始时间 开始时间

王心惟

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在学习OpenGl时,按书上例子却无法得到正确的纹理(其实纹理根本未显示),代码
如下,盼高手答之!:->

procedure TForm1.minit;//建立内存纹理图案
var
i,j,c1,c2,c:integer;
r,g,b:byte;
begin
for i:=0 to 63 do
for j:=0 to 63 do
begin
if (i and $8)=0 then c1:=$ffff
else c1:=0;
if (j and $8)=0 then c2:=$ffff
else c2:=0;
c:=(c1 xor c2) and $ffff;

checkimage[i,j,0]:=Byte(c);
checkimage[i,j,1]:=Byte(c);
checkimage[i,j,2]:=Byte(c);
end;
end;
procedure TForm1.Initialize(width:GLsizei;height:GLsizei);//初始化
begin
glClearColor(0,0,0,0);
glClearDepth(1);

glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_DEPTH_TEST);

glViewport(0,0,width,height);

glMatrixMode(GL_PROJECTION);
gluPerspective(45,1.0*width/(1.0*height),1,20);

minit;
glPixelStorei(GL_UNPACK_ALIGNMENT,1);
glTexImage2d(GL_TEXTURE_2D,0,1,64,64,0,GL_RGB,GL_UNSIGNED_BYTE,@checkimage);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_BLEND);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_FLAT);
end;
procedure TForm1.DrawScene;//绘制
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

glPushMatrix;
glTranslatef(0,0,-5);
glBegin(GL_QUADS);
glTexCoord2f(0,0);
glVertex3f(-2,-1,0);
glTexCoord2f(0,1);
glVertex3f(-2,1,0);
glTexCoord2f(1,1);
glVertex3f(0,1,0);
glTexCoord2f(1,0);
glVertex3f(0,-1,0);

glEnd;
glPopMatrix;
glFlush;
SwapBuffers(ghdc);
end;
procedure TForm1.FormPaint(Sender: TObject);//WM_ONPAINT
begin
DrawScene;
end;
 
delphi下没用过,我这里有的都是vc下opengl纹理的例子,需要吗?
 
glBegin(GL_QUADS);下面的每个顶点是否应先用glNormal3f()设定法向?
 
似乎o*o的方法也不行!
:-<
难道没有用DELPHI写OPENGL的大虾吗?
 
glTexImage2d(GL_TEXTURE_2D,0,1,64,64,0,GL_RGB,GL_UNSIGNED_BYTE,@checkimage);
^这里应该是3吧?
你没有说清楚你的checkimage数组的定义,我想应该是array[0..63,0..63,1..3] of byte吧?
 
不好意思,一个低级错误!
给jhj9加上120分,剩下的其他两位平分。
 
后退
顶部