StartDrawing() und ScreenOutput() unter Linux

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Benutzeravatar
CptGreenwood
Beiträge: 125
Registriert: 12.07.2007 10:40

StartDrawing() und ScreenOutput() unter Linux

Beitrag von CptGreenwood »

Hi,

ich bin immer noch dabei, ein Windows-Spiel unter Linux zu compilieren und hänge nun an folgendem Problem:

Das Programm compiliert und startet, bricht aber bei dem Aufruf StartDrawing(ScreenOutput()) mit der Meldung ab, dass der Output 0 sei. Ich habe mir das 2DDrawing-Beispielprogramm (das funktioniert) mal angeschaut und da wird nicht direkt auf den Screen gezeichnet, sondern auf ein Image, das dann in einer GUI angezeigt wird. Das hilft mir aber nicht viel, denn selbst, wenn ich ein leeres Image erstelle und darauf zeichne, muss ich es ja irgendwann auch per DrawImage() auf meinem Screen darstellen und das geht ja auch nur nach StartDrawing(), wo ich dann wieder am Anfang wäre.

In der Hilfe unter ScreenOutput() steht als unterstütztes Betriebssystem auch Linux, allerdings mit der Angabe (SDL) dahinter. Ich bin nicht so der Linux-Crack und habe es gerade nach viel Suchen geschafft, Sprite3D mit der Option Subsystem "opengl" compiliert zu bekommen aber dann hört es auch auf.

Ach ja: Ich nutze Ubuntu x86 und habe alle Libs installiert, bis "checkinstall.sh" von PureBasic nix mehr zu meckern hatte.

Kann mir jemand helfen, wie ich das 2DDrawing auf einem Vollbildschirm zum Laufen bekomme? Wäre echt nett! :allright:

Greetz,
Cpt
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von Vermilion »

Ist dir bekannt, dass Images nur für normale Anwendungen verwendet, und Sprites um Grafiken auf einem Screen darzustellen? Images auf Screen darstellen geht ebenso wenig wie Sprites in normalen Anwendungen nutzen.
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
CptGreenwood
Beiträge: 125
Registriert: 12.07.2007 10:40

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von CptGreenwood »

Gilt das, was du schreibst, nur für Linux? Unter Windows funktioniert das nämlich einwandfrei...
Eigentlich will ich ja gar kein Image darstellen, sondern nur einen Text auf dem Grafikbildschirm ausgeben.

Code: Alles auswählen

OpenScreen(...)
StartDrawing(ScreenOutput())
DrawText(10, 10, "Blahblah"...)
StopDrawing()
Mein Problem liegt beim ScreenOutput(), das ImageOutput() war nur ein Beispiel, weil es unter Windows funktioniert.
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von Vermilion »

Ich habe meine Linuxpartition erst kürzlich gelöscht und somit derzeit kein Linux, sonst würde ich es testen. Aber versuche mal in Synaptic (bzw. deinem Packetmanager) das Paket sdl_ttf zu installieren. Darauf würde ich nun spontan tippen. Ich weiß nicht, ob das auch nötig ist, wenn man keinen Font lädt, aber sicher ist sicher. Der Screen wird auch angezeigt? Die Paketvorrausetzungen für PureBasic beachtet?

Beispielcode?
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Benutzeravatar
CptGreenwood
Beiträge: 125
Registriert: 12.07.2007 10:40

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von CptGreenwood »

Alle Paketvorgaben von PB sind restlos erfüllt. Habe es mit "checkinstall.sh" überprüft.

Das Problem liegt auch nicht wirklich bei der Textausgabe, dahin kommt das Programm überhaupt nicht. Der Übeltäter ist die Zeile

Code: Alles auswählen

StartDrawing(ScreenOutput())
die alle 2D-Zeichenoperationen (z.B. DrawBox, DrawCircle, DrawLine, DrawText, ...) einleiten muss. Die Funktion ScreenOutput(), die bei StartDrawing() verwendet wird, soll die ID des aktiven Grafikbildschirms liefern, damit StartDrawing() weiß, wohin gezeichnet werden soll (neben ScreenOutput gibt es ja auch noch SpriteOutput und ImageOutput).

Das eigentliche Problem: Anstatt die ID des aktiven Screens gibt ScreenOutput "0" zurück und das Programm kratzt ab. Unter Windows funktioniert das einwandfrei, d.h. es muss etwas linuxspezifisches sein. Ich habe kurz mal daran gedacht, dass es am Subsystem "OpenGL" liegt, vielleicht funzt es damit nicht. Wenn ich aber kein OpenGL angebe, meckert PB über InitSprite3D(), das geht dann wohl NUR mit OpenGL. Ist aber nur eine Vermutung, daher dachte ich, dass schon jemand vielleicht ähnliche Erfahrungen gemacht hat...
Benutzeravatar
CptGreenwood
Beiträge: 125
Registriert: 12.07.2007 10:40

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von CptGreenwood »

Hat sich erledigt, es ist so, wie ich es mir gedacht habe. Will ich Sprite3D, muss ich Subsystem OpenGL nehmen, damit funktioniert kein StartDrawing(ScreenOutput()). Gebe ich kein spezielles Subsystem an, ist es umgekehrt. Auf eine der beiden Sachen muss ich wohl verzichten...
Benutzeravatar
Vermilion
Beiträge: 1846
Registriert: 08.04.2006 16:00
Computerausstattung: Apple iMac (2010) & HP Notebook
Wohnort: Heidekreis

Re: StartDrawing() und ScreenOutput() unter Linux

Beitrag von Vermilion »

Ups. /:-> Sorry, hatte überlesen, dass du Sprite3D verwendest. Aber wenn ich richtig informiert bin, soll der 2DDrawing Kram in der neuesten PureBasic Version nun auch mit OpenGL Subsystem gehen (ich hoffe, damit war nicht nur die Windows Version gemeint).
Bild

Immer die neueste PureBasic Version. Auf allem Betriebssystemen. Ich bin ein OS-Nomad!
Antworten