Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.28;
Скачать: CL | DM;

Вниз

Подскажите в чем ошибка   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-1205313037
DVM
2008-03-12 12:10
2008.12.28
Excel.Application как сменить формат данных в ячейке?


15-1225166445
Slider007
2008-10-28 07:00
2008.12.28
С днем рождения ! 28 октября 2008 вторник


15-1224866998
DVM
2008-10-24 20:49
2008.12.28
Подскажите чайнику в Java


15-1225539231
Кое кто
2008-11-01 14:33
2008.12.28
Где можно посмотреть модели очень


2-1227018456
abhtr
2008-11-18 17:27
2008.12.28
Как программно создать Paradox таблицу с Table type = Paradox 3.5