Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 05.11.07 14:18 
Hi,

ganz vereinfacht: ich habe ein bmp in meinem OpenGL-Projekt. Jetzt will ich das ganze als png machen (mein Grafikprogramm kann leider kein tga exportieren, ist aber sonst genial ;) ). Wenn ich ihm aber einfach sage er soll die png-Datei laden, sagt er: "TglBitmap.LoadFromStream-Couldn't load stream. It's possible to be an unknown streamtype". Ich habe auch die neuste pngImage-Bibliothek geladen, hat aber garnichts gebracht (gleicher Fehler wie ganz ohne Bibliothek). Meine Load-Funktion:

ausblenden procedure TOpenGLWorks.LoadTextures(Pics: array of String);
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
//Textures: array of TglBitmap2D;

procedure TOpenGLWorks.LoadTextures(Pics: array of String);
var A: integer;
begin
  SetLength(Textures,Length(Pics));
  for A:=0 to High(Pics) do
    begin
      Textures[A]:=TglBitmap2D.Create;
      if FileExists(Pics[A]) then
        Textures[A].LoadFromFile(Pics[A])
      else
        begin
          ShowMessage('Texture not found! ('+Pics[A]+')');
          Application.Terminate;
        end;
      Textures[A].GenTexture;
    end;

end;


Hier kann mir doch sicher einer helfen...

Xion
Einloggen, um Attachments anzusehen!
_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 05.11.07 14:56 
Hast du auch das auskommentierte Define in der glBitmap.pas unauskommentiert?

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 05.11.07 14:59 
ausblenden Delphi-Quelltext
1:
2:
3:
  Windows, Graphics, Classes, SysUtils, JPEG
  {$ifdef NO_NATIVE_GL}, dglOpenGL{$endif}
  ,pngimage;


eigentlich sollte das ohnehin egal sein, denn es ist doch definiert, wenn es die Unit gibt...oder nicht?

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 05.11.07 15:03 
Um die uses gehts mir nicht.
Du kannst natürlich alles wo define und pngimage drin vorkommt löschen. Oder du kannst diese Zeile:
ausblenden Delphi-Quelltext
1:
{.$define pngimage}					

Zu dem Ändern:
ausblenden Delphi-Quelltext
1:
{$define pngimage}					

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 05.11.07 15:09 
aaah, danke, jetzt gehts :D

nur das Resultat ist ähnlich wie das, was ich mit einer tga-Datei hinbekommen hab (siehe Screenshot). Da muss ich sicher noch irgendwas an OpenGL umstellen...aber was?
Einloggen, um Attachments anzusehen!
_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mo 05.11.07 15:31 
Wie wärs, wenn du uns noch den Code zum Rendern zeigst?
*Hier bitte Glaskugelspruch einfügen*

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 05.11.07 16:05 
ah, ja, das ist eine Idee :lol: :oops:

ausblenden Textur zeichnen
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
procedure TOpenGLWorks.PaintStaticTex(TexID: integer; R:real; Color: array of Single; Rotate: real);
begin
  R:=R/Scaler;
  glEnable(GL_TEXTURE_2D);
  glDisable(GL_LIGHTING);    //Light

  glPushMatrix;
  glRotatef(20,1,0,0);
  glRotatef(20,0,1,0);
  glRotatef(Rotate*dT,0,0,1);

  glDisable(GL_CULL_FACE);

  Textures[TexID].Bind();
  glColor3f(Color[0],Color[1],Color[2]);
  glBegin(GL_QUADS);
    glTexCoord2f(0,0); glVertex3f(-R,R,0);
    glTexCoord2f(0,1); glVertex3f(-R,-R,0);
    glTexCoord2f(1,1); glVertex3f(R,-R,0);
    glTexCoord2f(1,0); glVertex3f(R,R,0);
  glEnd();
  glEnable(GL_LIGHTING);    //Light
  glDisable(GL_TEXTURE_2D);
  glEnable(GL_CULL_FACE);

  glPopMatrix;
end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mo 05.11.07 16:28 
Mal anders gefragt. Wie soll denn das Resultat überhaupt aussehen? Denn in dem Code sehe ich so jetzt keinen direkten Fehler. Bis auf, dass du deine Fläche im Uhrzeigersinn zeichnest aber normal gegen den Uhrzeiger gezeichnet wird. Das ist so aber nicht so tragisch, da du Backfaceculling auch deaktiviert hast.

Allerdings ein Kreis sieht ja okay aus. Allerdings die zwei Halben sind sicher nicht so gewollt, oder?

PS: Du solltest deine Textur auf 256x256 erweitern. Ältere Grafikkarten können damit ärger bekommen.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 05.11.07 18:27 
Hi,
das Resultat soll eine Kugel mit dem Ring drum sein ;)

//PS: es ruckelt auch ziemlich, er scheint schwer zu arbeiten demnach ^^

mit einem bmp gehts ja auch prima, aber mit png mag er nicht...

wenn ich senkrecht draufgucke ist es ein kreis, aber schräg sind es die 2 halben


Das angehängte Bild zeigt wie es sein soll. Der grüne Bereich ist der, den ich durch die Transparenz des pngs sehen will, der wird bei einem bmp verdeckt
Einloggen, um Attachments anzusehen!
_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Mo 05.11.07 21:24 
Also das Ruckeln liegt an der Größe des Bildes. Es muss eine Potenz von 2 sein. Also 256. Ansonsten kann es auf vermeindlichen ATI Karten ruckeln, da die Karte bei aktivierten MipMaps in den Software Modus verfällt. Obwohl sie es eigentlich unterstützen müssten.

Und das Andere sollte eigentlich kein Problem sein. Allerdings durch die Transparenz musst du zu erst die Kugel und anschließend das einzelne Quad zeichnen. Da das Transparente nr richtig gezeichnet wird, wenn du es auch über alles drüber zeichnest. Wenn du dann noch Blending aktivierst sollte es eigentlich keine Probleme geben.
ausblenden Delphi-Quelltext
1:
2:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);

Und anschließend wieder deaktivieren.

Falls es immer noch nicht geht wäre es gut, wenn du mal das gesammte Projekt anhängen könntest. Also mit allen benötigten Units. Dann kann man sich das mal live anschauen.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
Xion Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 06.11.07 15:58 
das Bild hat die entsprechende Größe...habe jetzt mal ein Mini-Prog geschrieben, dass die Unit verwendet. Es ist leider keine Kamerabewegung möglich, aber es zeigt doch das Problem.

//Edit: nein, das Bild hat nicht die richige Größe, irgendwie wird es falsch exportiert...

ah, jetzt gehts :) danke...nur ist die Textur noch undurchsichtig für die Kugel, aber andre Sachen sehe ich durch *grübel*

*Dateianhang gelöscht*



Ah, danke, jetzt gehts :) erst ball zeichnen, dann textur, so wie du es gesagt hast.

Das hätte ich ohne euch nie hinbekommen, vielen Dank!

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)