AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Linux, Lazarus und OpenGL

Ein Thema von igel457 · begonnen am 29. Apr 2007 · letzter Beitrag vom 24. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#1

Linux, Lazarus und OpenGL

  Alt 29. Apr 2007, 17:13
Hallo,

ich habe mittlerweile mein OpenGL-Plugin für Andorra 2D einigermaßen zum Rennen gebracht (Licht und Indexbuffer gehen noch nicht). Jetzt möchte ich das Ganze auch unter Linux zum Laufen bringen. Momentan initialisiere ich OpenGL so:
Delphi-Quellcode:
FDC := GetDC(AWnd); //AWnd ist ein Handle auf ein Fenster
FRC := CreateRenderingContext(FDC,etc.);
ActivateRenderingContext(FRC);
Leider sind diese Funktionen in der Unit "Windows".
Wie kann ich dies unter Linux erreichen? Ich finde irgendwie nur Beispiele, die mit GLUT ein eigenes Fenster erzeugen.

Ich hoffe ihr habt eine Lösung,
igel457
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Linux, Lazarus und OpenGL

  Alt 29. Apr 2007, 17:19
Unter Linux gibts keine Handles. Am besten, du steigst auf SDL um.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Linux, Lazarus und OpenGL

  Alt 29. Apr 2007, 17:34
Es muss doch möglich sein, ein OpenGL Rendering-Context beschränkt auf ein einziges Control zu erstellen...
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Linux, Lazarus und OpenGL

  Alt 29. Apr 2007, 17:35
Unter Windows ja, unter Linux weiß ich es nicht. Ich könnte mir vorstellen, dass OpenGL-Render-Kontexte dort sehr viel anders gehandhabt werden als unter Windows, wo sie ja ein Handle haben. Zur Not musst du mit {$IFDEF Windows} arbeiten und ne Linux-Lösung extra finden.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#5

Re: Linux, Lazarus und OpenGL

  Alt 29. Apr 2007, 17:38
Ich schau mal im GLScene Sourcecode. Die machens ja auch irgendwie...


Edit: So funktionierts bei GLScene. Ich denke doch mal, dass outputDevice das Handle ist...
Delphi-Quellcode:
procedure TGLLinuxContext.DoCreateContext(outputDevice : Cardinal);
var
  winattr: XWindowAttributes;
  vitemp: xlib.XVisualInfo;
  nret: Integer;
  glwin: Cardinal;
  vi: xlib.PXvisualInfo;
begin
  // Just in case it didn't happen already.
  if not InitOpenGL then RaiseLastOSError;
  { Create OpenGL context }
  FOutputDevice := QWidgetH(outputDevice);
  glwin := QWidget_winId(FOutputDevice);
  xlib.XGetWindowAttributes(Application.Display, glwin, @winattr);
  vitemp.visual := winattr.visual;
  vitemp.visualid := XVisualIDFromVisual(vitemp.visual);
  vi := XGetVisualInfo(Application.Display, VisualIDMask, @vitemp, @nret);
  FRenderingContext := glXCreateContext(Application.Display, vi, nil, True);
  if RenderingContext = nil then
    raise Exception.Create('Failed to create rendering context');
  if RenderingContext = GLX_BAD_CONTEXT then
    raise Exception.Create('bad context');
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Linux, Lazarus und OpenGL

  Alt 4. Mai 2007, 07:40
Als ich arbeite jetzt einiger Zeit mit Lazarus Unter Linux:
es gibt Handle und auch die nötigen Funktionen dazu.

Sie stehen nur nicht in der Windows unit drin sondern wo anders.

Wenn es nur um die Handle geht igel457 dann könntest du evlt. das auch so machen:
Delphi-Quellcode:
FDC :=Form1.Canvas.Handle //AWnd ist ein Handle auf ein Fenster
// Was das hier ist weiß ich nicht genau evlt. kannst du hier das gleiche wie in FDC rein schreiben.
FRC := CreateRenderingContext(FDC,etc.);
ActivateRenderingContext(FRC);
Es gibt glaube ich ein Beispiel zu OpenGL im Lazarus Ordner. Unter Demos oder so ähnlich
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Linux, Lazarus und OpenGL

  Alt 4. Mai 2007, 14:49
Zitat von Igel457:
Leider sind diese Funktionen in der Unit "Windows".
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Linux, Lazarus und OpenGL

  Alt 4. Mai 2007, 15:03
schau dir mal das demo hier an:
/usr/lib/lazarus_neu/examples/openglcontrol
dort wird OpenGL genutzt. Kann sein das die Prozeduren hier anders heißen und auch wo anders drin sind.

also in einer anderen Unit.

schade ich finde die eine Hilfe von monta mit der such Funktion nicht wieder.
aber gehe mal auf
http://www.monta-n.net/lazarusforum/

oder suche mal mit grep nach diese Procedure
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Linux, Lazarus und OpenGL

  Alt 4. Mai 2007, 15:36
Das Openglcontrol habe ich schon gesehen, ich bekomme es unter Linux aber nicht installiert. Ich habe das Ganze mittlerweile so weit zum Laufen gebracht, dass es Kompiliert. Allerdings stürzt das Programm sofort ab. Debuggen konnte ich das Ganze allerdings auch nicht, da unter der Verwendung von GDB nicht mehr nur mein Programm, sondern ganz Lazarus abstürzt. Neuere Version von Lazarus/GDB konnte ich allerdings auch nicht installieren, da mein WLAN-Karten-Treiber unter Linux kein WEP unterstützt und ich somit nicht ins Internet konnte.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Linux, Lazarus und OpenGL

  Alt 4. Mai 2007, 16:25
Ist ja seltsam.

Hast du alle Packte installiert ?

welches Linux hast du ?
stelle die Frage mal im Lazarus Forum.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz