Avatar billede baxos Nybegynder
18. november 2003 - 19:38 Der er 1 kommentar og
1 løsning

OpenGL Arikle på udvikleren

http://www.udvikleren.dk/article.php?techid=2&aid=166  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?
Avatar billede baxos Nybegynder
18. november 2003 - 19:41 #1
Ps får fejl i disse 2 linjer ved functionen :  glGenTextures(1, I);
  glBindTexture(gl_Texture_2D, I);
Avatar billede baxos Nybegynder
18. november 2003 - 20:37 #2
Fandt selv ud af det :|
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester