Форум: "Игры";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
ВнизПодскажите в чем ошибка Найти похожие ветки
← →
akaValerius © (2007-04-12 13:22) [0]В чам ошибка квадрат белый без текстуры.
var
.....
Tex: GLuInt;
implementation
{$R *.dfm}
procedure glGenTextures(N: GLSizei; Textures: PGLuInt); stdcall; external opengl32;
procedure glBindTexture(Target: GLEnum; Texture: GLuInt); stdcall; external opengl32;
function gluBuild2DMipmaps(Target: GLEnum; Components: GLInt;
Width: GLInt; Height: GLInt; Format: GLEnum; _Type: GLEnum; Data: Pointer): GLInt; stdcall; external glu32;
procedure TForm1.FormCreate(Sender: TObject);
...
CreateTextures;
...
procedure TForm1.CreateTextures;
var
Btex:TBitmap;
i,j,color:Integer;
TexData:array[0..255,0..255,0..2] of Byte;
begin
Btex:= TBitmap.Create;
Btex.LoadFromFile("2.bmp");
For j:= 0 to 255 do
For i:= 0 to 255 do begin
color:=BTex.Canvas.Pixels[j,i];
TexData[i,j,0] := GetRValue(color);
TexData[i,j,1] := GetGValue(color);
TexData[i,j,2] := GetBValue(color);
end;
Btex.Free;
{ Generate textures }
glGenTextures(1, @Tex);
glBindTexture(GL_TEXTURE_2D, Tex);
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,
256,256,0,GL_RGB,GL_UNSIGNED_BYTE,@TexData);
end;
procedure TForm1.Draw;
begin
wglMakeCurrent(Canvas.Handle, hrc);
glEnable(GL_DEPTH_TEST);
VHSPosition.SetProjection;
glLoadMatrixf(@matidentity);
VHSPosition.MoveForward(up);
up:=0;
VHSPosition.RotateY(angleY);
VHSPosition.RotateX(angleX);
{***************************************************}
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glTexParameteri( GL_TEXTURE_2D , GL_TEXTURE_MIN_FILTER , GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D , GL_TEXTURE_MAG_FILTER , GL_LINEAR );
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, Tex);
glBegin(GL_QUADS);
glTexCoord2f(0.0, 0.0); glVertex2f(-1.0, -1.0);
glTexCoord2f(1.0, 0.0); glVertex2f( 1.0, -1.0);
glTexCoord2f(1.0, 1.0); glVertex2f( 1.0, 1.0);
glTexCoord2f(0.0, 1.0); glVertex2f(-1.0, 1.0);
glEnd;
glBindTexture(GL_TEXTURE_2D, 0);
SwapBuffers(Canvas.Handle);
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
wglMakeCurrent(0, 0);
← →
Rial © (2007-04-12 17:58) [1]Осмелюсь предположить, что ошибка либо тут:
...
Либо тут:glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,
256,256,0,GL_RGB,GL_UNSIGNED_BYTE,@TexData);
Перечитай и изучи описание процедуры.
А вообще, процедура отрисовки будет жутко тормозить.
Вынеси из нееwglMakeCurrent(Canvas.Handle, hrc);
wglMakeCurrent(0, 0);
Удали вообще
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
← →
akaValerius © (2007-04-12 22:20) [2]glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,
256,256,0,GL_RGB,GL_UNSIGNED_BYTE,@TexData);
Тут все нормал, я предпологаю что чтото связано с glBindTexture без нее все пашет, если просто
glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,
256,256,0,GL_RGB,GL_UNSIGNED_BYTE,@TexData);
Страницы: 1 вся ветка
Форум: "Игры";
Текущий архив: 2008.12.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c