Для полного теста "стереопары" нужно загрузка стерео-текстуры.
В первом варианте техно демки с (применением кучи сторонних DLL и без LCL интерфейса ) она была..
Но кто сказал что без этих самых "сторонних DLL" текстуры не загружается ?
Кто угодно но только не я !
- Код: Выделить всё
function LoadTextureBMP(const FileName: String ): GLuint;
var
i, j: Integer;
bmp: TBitmap;
texID : GLuint;
begin
bmp := TBitmap.Create;
try
bmp.LoadFromFile(FileName); // Загрузка рисунка в битовую матрицу.
// Создадим текстуру
glEnable(GL_TEXTURE_2D);
glGenTextures( 1, @texID );
glBindTexture( GL_TEXTURE_2D, texID );
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glTexImage2D(GL_TEXTURE_2D, 0, 3, bmp.Width, bmp.Height,
0, GL_BGR_EXT,GL_UNSIGNED_BYTE, bmp.RawImage.Data);
gluBuild2DMipmaps (GL_TEXTURE_2D, GL_RGB, bmp.Width, bmp.Height,
GL_BGR_EXT, GL_UNSIGNED_BYTE,bmp.RawImage.Data);
finally
Result := texID;
bmp.Free;
end;
end;

Муа-ха-ха ! (Совершенно непонятно зачем, в 100500 примерах к лазарусу, всюду применяют какие-то дикие "извраты местной промышленности" )
В начале зная "вредные привычки" OpenGL я "ничтоже суетясь" написал две вспомогательные процедуры ...
RGR2BGR и BitmapTest...
- Код: Выделить всё
Procedure RGR2BGR(Var Bitmap: TBitmap);
Type
RGB1=Record b,g,r : byte; end;
var
X, Y: Integer;
PixelPtr: PInteger;
PixelRowPtr: PInteger;
BytePerPixel: Integer;
BW:Byte;
PRGB:^RGB1;
begin
try
Bitmap.BeginUpdate(False);
PixelRowPtr := PInteger(Bitmap.RawImage.Data);
BytePerPixel := Bitmap.RawImage.Description.BitsPerPixel div 8;
for Y := 0 to Bitmap.Height - 1 do begin
PixelPtr := PixelRowPtr;
for X := 0 to Bitmap.Width - 1 do begin
PRGB:=Pointer(PixelPtr);
With PRGB^ do begin
bw:=R; R:=B; B:= BW;
end;
Inc(PByte(PixelPtr), BytePerPixel);
end;
Inc(PByte(PixelRowPtr),Bitmap.RawImage.Description.BytesPerLine);
end;
finally
Bitmap.EndUpdate(False);
end;
end;
Function BitmapTest(var TB:TBitmap; Mode:TPixelFormat;
F_Free:Boolean=true):Boolean ;
Var
CB:TBitmap;
Begin
Result:= tb.PixelFormat=mode ;
if not Result then
begin
CB:=TBitmap.Create;
cb.SetSize(tb.Width,tb.Height);
cb.PixelFormat:=Mode;
Cb.Canvas.Draw(0,0,TB);
if F_Free then tb.free;
Tb:=CB;
end
end;
Тоже кстати из серии "за что погибли мухи? "(В старых примерах полно такого тормозного (или нерабочего 64-х битном режиме) БРЕДА что хоть стой хоть падай...)
Но саме смешное в том, что они не понадобились! Стандартный способ загрузки картинок загружает bmp-шки В ТОМ ЖЕ САМОМ формате что требуется для загрузки текстур в OpenGL!!! Нейтрид оверсан ! "В честь памяти Карла все Мухи занесены в красную книгу ..."


GL_Select05_VR_05_51_Bin.7z Размер: 3,1 МБ 