sad og læste den nu er jeg næsten ved bunden men sidder fast ved denne :
Til sidst, vil jeg lige vise, hvordan man kan anvende flere textures med OpenGL. I næste eksempel laver jeg en væg og et loft, med hver sin texture. Intil nu har vi kun renderet én primitiv ad gangen, derfor har vi slet ikke været inde på gl_Depth_Testen endnu. Som jeg nævnte i starten af artiklen, har OpenGL forskellige buffers. En af dem er Depth bufferen. For at anvende Depth bufferen tilføjer vi den blot sammen med gl_Color_Buffer_Bit i funktionen glClear(). Den vil derfor komme til at se således ud:
glClear(gl_Color_Buffer_Bit or gl_Depth_Buffer_Bit);
ud over det skal vi lige huske at gøre den tilgængelig:
glEnable(gl_Depth_Test);
og så kommer da en funktion
function LoadTexture(FileName : string) : Integer;
var
Bitmap : TBitmap;
X, Y, I : Integer;
A : array of TRGB;
begin
Bitmap := TBitmap.Create;
Bitmap.LoadFromFile(FileName);
SetLength(A,0);
for Y := Bitmap.Height-1 downto 0 do
for X := 0 to Bitmap.Width-1 do
begin
SetLength(A,High(A)+2);
I := ColorToRGB(Bitmap.Canvas.Pixels[X,Y]);
A[High(A)].Red := GetRValue(I);
A[High(A)].Green := GetGValue(I);
A[High(A)].Blue := GetBValue(I);
end;
glGenTextures(1, I);
glBindTexture(gl_Texture_2D, I);
glTexParameteri(gl_Texture_2D, GL_Texture_Wrap_S, gl_Repeat);
glTexParameteri(gl_Texture_2D, GL_Texture_Wrap_T, gl_Repeat);
glTexParameteri(gl_Texture_2D, gl_Texture_Mag_Filter, gl_Nearest);
glTexParameteri(gl_Texture_2D, gl_Texture_Min_Filter, gl_Nearest);
glTexImage2D(gl_Texture_2D, 0, 3, Bitmap.Width, Bitmap.Height, 0, gl_RGB, gl_Unsigned_Byte, A);
glEnable(gl_Texture_2D);
Bitmap.Free;
//Retunere ID
Result := I;
end;
Har 2 spm
1. Hvor skal de 2 øverste linjer placeres?
2.Kan i se nogle fejl i functionen?
Kasper - Har osse lavet spm på eksperten vil have et hurtigt svar ^^
[Redigeret d. 18/11-03 20:05:47 af Jan Emil]