Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Di Apr 23, 2024 22:32

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Fr Okt 01, 2010 15:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jul 23, 2009 04:33
Beiträge: 157
Programmiersprache: Turbo Delphi Pro
Dann kann ich dir nur den TGA-Loader anbieten. Er lädt allerdings ausschließlich unkrompimierte 32-Bit TGAs. Vielleicht bekommst du es damit zum laufen, mehr kann ich dir aktuell nicht anbieten.

Code:
  function loadTGA(ffile: String): Cardinal;
    type tTGAHeader = packed record
      idLength:   Byte;
      palette:    Byte;
      tgaType:    Byte;
      pAddr:      Word;
      pLength:    Word;
      pSize:      Byte;
      xNull:      Word;
      yNull:      Word;
      width:      Word;
      height:     Word;
      bits:       Byte;
      attribs:    Byte;
    end; // tgaHeader
    var
      tgaFile: tFileStream;
      header: tTGAHeader;
      data: array of Byte;
      Texture: Cardinal;
  begin
      tgaFile := tFileStream.Create(ffile,fmOpenRead);
          tgaFile.ReadBuffer(header,sizeof(header));
          if (header.idLength <> 0) or
             (header.palette <> 0) or
             (header.tgaType <> 2) or
             (header.bits <> 32) then
                begin
                  //raise Exception.Create('Invalid TGA-Header') at @loadTGA;
                    exit;
                end; // if header
          setLength(data,header.width*header.height*4);
          tgaFile.ReadBuffer(data[0],length(data));
          glGenTextures(1, @Texture);
          glBindTexture(GL_Texture_2D,Texture);

          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);

          glTexImage2D(GL_TEXTURE_2D, 0, 4,
                       header.width, header.height,0,
                       GL_BGRA, GL_UNSIGNED_BYTE,
                       @data[0]);
        tgaFile.Free;
    result := Texture;
  end;  // load TGA

_________________
Bringe einen Menschen zum grübeln, dann kannst du heimlich seinen Reis essen.
(Koreanisches Sprichwort)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Fr Okt 01, 2010 17:30 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
also ich nutze ja die Textures.pas die auch im Wikki vorgestellt wird

Textures.pas

supereinfaches laden und nutzen

Code:
LoadTexture('TexPath', Variable, AusStreamLaden?);
glBindTexture(GL_TEXTURE_2D, Variable);


mehr brauchst du nicht, also ich denke einfacher geht es kaum und es funktioniert bei mir super


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Sa Okt 02, 2010 12:35 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Nein, mit der Unit Textures, geht es ebenfalls nicht :-(
In dieser kommen haufenweise Fehler


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Sa Okt 02, 2010 21:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Moment. Die glBitmap.pas wird sehr häufig eingesetzt. Wenn da Fehler kommen, liegt an der Benutzung.
Was für Fehler kommen denn? Und wie benutzt du diese?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: So Okt 03, 2010 15:18 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Welche Textures.pas meinst du denn?
Die unter dem Link, da kamen Fehler.
Gibt es noch eine?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: So Okt 03, 2010 16:22 
Offline
DGL Member

Registriert: Do Jul 15, 2010 13:28
Beiträge: 4
also ich benutze glBitmap für texturen

dann sieht der quelltext so aus

Code:
unit test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, dglOpengl, glBitmap;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private-Deklarationen }
    DC,
    RC: HDC;
  public
    { Public-Deklarationen }
  end;

const
  NearClipping = 1;
  FarClipping = 1000;

var
  Form1: TForm1;
  Texture: TGLBitmap2D;  //variable texture deklarieren

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  DC:= GetDC(Handle);
  if not InitOpenGL then Application.Terminate;
  RC:= CreateRenderingContext( DC,
                               [opDoubleBuffered],
                               32,
                               24,
                               0,0,0,
                               0);
  ActivateRenderingContext(DC, RC);
  glClearColor(0, 0, 0, 0.0);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
  Texture:= TGLBitmap2D.Create('dein dateipfad und name.jpg');  //die texture laden(soweit ich weiss werden bmp, jpg und tga unterstüzt)
  Texture.GenTexture();  // texture wird generiert
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeactivateRenderingContext;
  DestroyRenderingContext(RC);
  ReleaseDC(Handle, DC);
  Texture.Free;    // texture wird nach beenden des programms wieder frei gegeben
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  glViewport(0, 0, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, ClientWidth/ClientHeight, NearClipping, FarClipping);
 
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  //IdleHandler(Sender, tmpBool);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
 
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(60, ClientWidth/ClientHeight, NearClipping, FarClipping);
 
  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  Texture.Bind();   // texture wird gebunden
  glTranslatef(0,0,-10);
  glPushMatrix();
  glEnable(GL_BLEND);
  glDisable(GL_DEPTH_TEST);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glColor3f(0,1,0);
  glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(-1, -1);
    glTexCoord2f(1,0); glVertex2f(1, -1);
    glTexCoord2f(1,1); glVertex2f(1, 1);
    glTexCoord2f(0,1); glVertex2f(-1, 1);
  glEnd;
  glDisable(GL_BLEND);
  glEnable(GL_DEPTH_TEST);
  glPopMatrix();

  SwapBuffers(DC);
end;

end.


unter delphi funktioniert das einwandfrei

Dateianhang:
test1.jpg

ohne texture

Dateianhang:
test 2.jpg

mit texture


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: So Okt 03, 2010 19:55 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
flix hat geschrieben:
Welche Textures.pas meinst du denn?
Die unter dem Link, da kamen Fehler.
Gibt es noch eine?


Mein Fehler: Ich meinte die glBitmap.pas. Die wird hier von Lossy eX supportet und ist schon recht erprobt.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Mo Okt 04, 2010 19:18 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
In dieser Unit kommen aber auch viele Fehler, z.B. Unit JPEG wurde nicht gefunden,
C:\Programme\dglsdk\lib\glBitmap.pas(594,54) Error: Duplicate identifier "Format"
usw.
C:\Programme\dglsdk\lib\jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
C:\Programme\dglsdk\lib\jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
C:\Programme\dglsdk\lib\jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
C:\Programme\dglsdk\lib\jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
C:\Programme\dglsdk\lib\glu.pas(140,14) Hint: Type "PPointer" redefinition
C:\Programme\dglsdk\lib\jedi-sdl.inc(237,4) Warning: Illegal compiler directive "$THREADING"
C:\Programme\dglsdk\lib\glut.pas(74,14) Hint: Type "PInteger" redefinition
C:\Programme\dglsdk\lib\glut.pas(75,12) Hint: Type "PPChar" redefinition
C:\Programme\dglsdk\lib\glBitmap.pas(594,54) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(594,54) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(595,54) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(595,54) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(604,83) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(604,83) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(609,87) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(609,87) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(667,38) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(667,38) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(667,71) Error: Duplicate identifier "Width"
C:\Programme\dglsdk\lib\glBitmap.pas(667,71) Hint: Identifier already defined in glBitmap.pas at line 563
C:\Programme\dglsdk\lib\glBitmap.pas(667,92) Error: Duplicate identifier "Height"
C:\Programme\dglsdk\lib\glBitmap.pas(667,92) Hint: Identifier already defined in glBitmap.pas at line 564
C:\Programme\dglsdk\lib\glBitmap.pas(667,114) Error: Duplicate identifier "Depth"
C:\Programme\dglsdk\lib\glBitmap.pas(667,114) Hint: Identifier already defined in glBitmap.pas at line 565
C:\Programme\dglsdk\lib\glBitmap.pas(668,27) Error: Duplicate identifier "Target"
C:\Programme\dglsdk\lib\glBitmap.pas(668,27) Hint: Identifier already defined in glBitmap.pas at line 569
C:\Programme\dglsdk\lib\glBitmap.pas(668,35) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(668,35) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(668,43) Error: Duplicate identifier "InternalFormat"
C:\Programme\dglsdk\lib\glBitmap.pas(668,43) Hint: Identifier already defined in glBitmap.pas at line 571
C:\Programme\dglsdk\lib\glBitmap.pas(682,61) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(682,61) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(724,38) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(724,38) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(724,71) Error: Duplicate identifier "Width"
C:\Programme\dglsdk\lib\glBitmap.pas(724,71) Hint: Identifier already defined in glBitmap.pas at line 563
C:\Programme\dglsdk\lib\glBitmap.pas(724,92) Error: Duplicate identifier "Height"
C:\Programme\dglsdk\lib\glBitmap.pas(724,92) Hint: Identifier already defined in glBitmap.pas at line 564
C:\Programme\dglsdk\lib\glBitmap.pas(724,114) Error: Duplicate identifier "Depth"
C:\Programme\dglsdk\lib\glBitmap.pas(724,114) Hint: Identifier already defined in glBitmap.pas at line 565
C:\Programme\dglsdk\lib\glBitmap.pas(725,27) Error: Duplicate identifier "Target"
C:\Programme\dglsdk\lib\glBitmap.pas(725,27) Hint: Identifier already defined in glBitmap.pas at line 569
C:\Programme\dglsdk\lib\glBitmap.pas(725,35) Error: Duplicate identifier "Format"
C:\Programme\dglsdk\lib\glBitmap.pas(725,35) Hint: Identifier already defined in glBitmap.pas at line 570
C:\Programme\dglsdk\lib\glBitmap.pas(725,43) Error: Duplicate identifier "InternalFormat"
C:\Programme\dglsdk\lib\glBitmap.pas(725,43) Hint: Identifier already defined in glBitmap.pas at line 571
C:\Programme\dglsdk\lib\glBitmap.pas(795,1) Fatal: There were 19 errors compiling module, stopping


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Mo Okt 04, 2010 22:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 04, 2008 23:15
Beiträge: 39
Wohnort: Oberösterreich
Programmiersprache: ObjPas, C, DivASM
Bei der glBitmap.pas aus dem SDK handelt es sich um eine alte Version die nicht Freepascal kompatibel ist.
Im Projekt Thread gibt es die neueste Version, die ist Freepascal kompatibel.
Hier der Link: http://www.delphigl.com/forum/viewtopic.php?f=13&t=7458


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Mi Okt 06, 2010 19:56 
Offline
DGL Member

Registriert: So Aug 01, 2010 17:29
Beiträge: 28
Ok, ich hab mal dein Beispiel ganommen, aber da kommt eine Windows Fehlermeldung am Anfang, wenn das Programm startet.
Mein aktueller Code ist dieserhier:
Code:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses  DGLOpenGL, windows, Classes, SysUtils, FileUtil, LResources, Forms, Controls,
  Graphics, Dialogs, ExtCtrls, ComCtrls, Buttons, glbitmap;


type

  { TForm1 }

  TForm1 = class(TForm)
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Timer1:  TTimer;
    procedure FormDestroy(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }


    StartTime, TimeCount, FrameCount: cardinal; //FrameCounter
    Frames, DrawTime: cardinal; //& Timebased Movement
    //procedure SetupGL;
    //procedure Render;
    //procedure ErrorHandler;
  public      { Public-Deklarationen }
  texid: gluint;
    DC: hdc;  //Handle auf Zeichenfläche
    RC: HGLRC;//Rendering Context

    { public declarations }
  end;

var
  i:     integer = 0;
  Form1: TForm1;
  bm: tBitmap;
  Texture: TGLBitmap2D;


const
  NearClipping = 1;
  FarClipping  = 1000;

implementation

uses gl, glu, glut,unit2;


procedure TForm1.FormCreate(Sender: TObject);
begin
  DC:= GetDC(Handle);
  if not InitOpenGL then Application.Terminate;
  RC:= CreateRenderingContext( DC,
                               [opDoubleBuffered],
                               32,
                               24,
                               0,0,0,
                               0);
  ActivateRenderingContext(DC, RC);
  glClearColor(0, 0, 0, 0.0);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
  Texture:= TGLBitmap2D.Create('bilder\gras18.jpg');  //die texture laden(soweit ich weiss werden bmp, jpg und tga unterstüzt)
  Texture.GenTexture();  // texture wird generiert
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  DeactivateRenderingContext;
  DestroyRenderingContext(RC);
  ReleaseDC(Handle, DC);
  Texture.Free;    // texture wird nach beenden des programms wieder frei gegeben
end;

procedure TForm1.FormResize(Sender: TObject);
begin
  glViewport(0, 0, ClientWidth, ClientHeight);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(45, ClientWidth/ClientHeight, NearClipping, FarClipping);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;
  //IdleHandler(Sender, tmpBool);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity;
  gluPerspective(60, ClientWidth/ClientHeight, NearClipping, FarClipping);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity;

  Texture.Bind();   // texture wird gebunden
  glTranslatef(0,0,-10);
  glPushMatrix();
  glEnable(GL_BLEND);
  glDisable(GL_DEPTH_TEST);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glColor3f(0,1,0);
  glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex2f(-1, -1);
    glTexCoord2f(1,0); glVertex2f(1, -1);
    glTexCoord2f(1,1); glVertex2f(1, 1);
    glTexCoord2f(0,1); glVertex2f(-1, 1);
  glEnd;
  glDisable(GL_BLEND);
  glEnable(GL_DEPTH_TEST);
  glPopMatrix();

  SwapBuffers(DC);
end; 


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Texturen
BeitragVerfasst: Mo Okt 11, 2010 14:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Hast du in der glBitmap den JPEG-Support aktiviert (oben sind Compilerdirektiven, die man einkommentieren kann) und liegt die jpeg.dll vor?

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 26 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 41 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.185s | 18 Queries | GZIP : On ]