Pixelansteuerung und Grafikprogrammierung
-
Lodrill schrieb:
Es ging darum auf einer nicht-Windows-Oberfläche (DOS zum Beispiel) eine eigene Schnittstelle zu programmieren und nach eigenen Bedürfnissen zu formen.
Witzbold!
-
So einen hatten wir doch schon vor Kurzem. Schade, das die Suche grad aus ist.
Bye, TGGC \-/
-
Wenn du dir tatsächlich selbst ne Lib zusammenstellen willst brauchst du nicht nur Programmierkenntnisse, sondern auch ne ganze Menge Mathekenntnisse.
-
...und vor allem Hardware-Kenntnisse von GraKas...
-
Okay ich habe mich mal mit einem Befreundeten Programmierer beraten
Werde mich da mal rantasten
Vielen dank für die Tips und hilfe!
Lodrill
-
Ich find die frage gar nicht so schlecht und interessant wäre es sicherlich, deshalb kann ich reaktionen wie "du witzbold" nicht verstehen.
Ich hab mich auch mal dafür interessiert; aber du wirst feststellen, das sowas eigentlich wenig spassig/interessant ist wenn du dich mit nervigen Hardwaredetails bzw. unetrschiedlichen Hardwareschnittstellen rumschlagen musst!
Wo man eine referenz zu diesem thema findet weiß ich auch nicht.
Aber ich glaube du kannst das was du erreichen willst auch tun, wenn du einen pointer auf den screen-Array hast und dann auf dieser Basis 3D-Ausgabe machst bzw. dir eine 3D-Engine erstellst. So mache ich es zur zeit, und es funktioniert ganz gut weil man alle mathematischen Algorithmen selbst implementieren muss und da lernst du sehr viel.Natürlich ist die Darstellung recht langsam da software.
Ich denke, am screen-array selbst zu arbeiten gehört zu den Bereichen der grafik, die am meisten low-level sind (außer natürlich bios/dos grafik usw)
-
Man kann doch mit irgendwelchen Asm Interrupts in einen Grafik Modus wechseln (glaub Standard VGA). So richtig glücklich wirst du allerdings nicht damit werden, denn wirst kaum eine Auflösung über 640x480 kriegen.
-
randa schrieb:
Ich find die frage gar nicht so schlecht und interessant wäre es sicherlich, deshalb kann ich reaktionen wie "du witzbold" nicht verstehen.
Ich finde das auch 'ne kuhle Sache!
Allerdings klang er nicht so, als ob er im entferntesten wüsste, worauf er sich einlässt...
Erstmal braucht's 'nen alten Rechner (P166 oder 486er) dafür, mit DOS, denn sowas unter WinXP & Co. KG zu machen hat wenig Sinn.
Dafür müsste er sich dann 'nen Compiler organisieren, möglichst mit Doku.
Im ASM Forum wird er schnell rausfinden, wie er IRQs anspricht (INT 13h und Konsorten), um in einen bestimmten (von der GraKa unterstützten) Grafikmodus zu wechseln.
Dann kann's langsam losgehen...Genausogut könnte er sich aber auch'n C-64 bei ebay ersteigern und darauf dann den VID und SID programmieren...
-
Lodrill schrieb:
Wie wurde denn auf DOS Basis programmiert?
Ich suche eben [...] einen der [...] ahnung von programmieren hat
Bin ja schon da.
IIRC:
mov al,13h int 10h push 0a000h pop es mov al,5 mov bx,32100 mov es:[bx],al
Und zeig mal was du dann soll Tolles damit bastelst...
Bye, TGGC \-/
-
Dann noch schwabbeldirapp
char far *video_buffer = (char far)0xA0000000L; for(int index=0; index<64000; index++) video_buffer[index] = 0; // mit schwarz füllen void Plot_Pixel(int x, int y, char color) { video_buffer[320*y+x] = color; }
...und dann hast Du's auch schon fast...
-
Warum so low-level?
Machs mit dx. Es sind nur ein paar zeilen code nötig: ein fenster erzeigen, ddraw initialisieren und cooperative level setzen => nicht viel, und selbst wenn man sich nicht auskennt kann man ja vorläufig copy&pasten, und dies dann benutzen, indem man von der surface den screen-pointer holt. Das kann man dann schön in einem fenster machen und muss sich nicht mit dos auseinandersetzen.
-
randa schrieb:
Warum so low-level?
Machs mit dx. Es sind nur ein paar zeilen code nötig: ein fenster erzeigen, ddraw initialisieren und cooperative level setzen => nicht viel, und selbst wenn man sich nicht auskennt kann man ja vorläufig copy&pasten, und dies dann benutzen, indem man von der surface den screen-pointer holt. Das kann man dann schön in einem fenster machen und muss sich nicht mit dos auseinandersetzen.wozu so lowlevel? einfach mit paint nen pixel setzen und abspeichern. nichtmal ein recompile nötig
oft ist der weg das ziel, sonst gebe es so lustige sachen wie TMDC nicht.
rapso->greets();
-
OMFG, immer diese Vorurteile.
=>Sgt. Nukem schrieb:
Erstmal braucht's 'nen alten Rechner (P166 oder 486er) dafür
...mit einem aktuellen 1CPU-System und DOS, bzw. Win9X oder aelter klappt das aber auch hervorragend (solange bei Win9x nicht mehr als 512MB Speicher drin sind
).
Sgt. Nukem schrieb:
Genausogut könnte er sich aber auch'n C-64 bei ebay ersteigern und darauf dann den VID und SID programmieren...
Stimmt, das waere bestimmt auch lustig, tut aber hier nichts zur Sache... :p
tasti schrieb:
Man kann doch mit irgendwelchen Asm Interrupts in einen Grafik Modus wechseln (glaub Standard VGA). So richtig glücklich wirst du allerdings nicht damit werden, denn wirst kaum eine Auflösung über 640x480 kriegen.
Jo, mit VGA kommst du nicht ueber 640*480, jedoch gibt es (AFAIK seit 1993) so einen netten Standard (VESA), der auch hochaufloesende Grafikmodi unterstuetzt.
Mit meinem 10Jahre alten 486DX-Board bekomme ich so auch schon 1024x768x8 hin - und das ganz ohne Windows oder dx.
-
randa schrieb:
Warum so low-level?
Machs mit dx. Es sind nur ein paar zeilen code nötig: ein fenster erzeigen, ddraw initialisieren und cooperative level setzen => nicht viel, und selbst wenn man sich nicht auskennt kann man ja vorläufig copy&pasten, und dies dann benutzen, indem man von der surface den screen-pointer holt. Das kann man dann schön in einem fenster machen und muss sich nicht mit dos auseinandersetzen.Öhh... hattest Du ihn nicht erst noch unterstützt?!?
Das war doch der Sinn der Sache...
Nobuo T schrieb:
OMFG, immer diese Vorurteile.
=>Sgt. Nukem schrieb:
Erstmal braucht's 'nen alten Rechner (P166 oder 486er) dafür
...mit einem aktuellen 1CPU-System und DOS, bzw. Win9X oder aelter klappt das aber auch hervorragend (solange bei Win9x nicht mehr als 512MB Speicher drin sind
).
Öhh... ja. Stimmt. Logisch. Ich denke immer an meine alten Zocks (LucasArts & Co.) ...
Trotzdem lasse ich auf meine 120 Gig Platte / WinXP nicht noch DOS los...
Und so'n alter Rechner is' ja auch schnell besorgt...Mal 'ne ernsthafte Frage: Läuft das eigentlich auch auf Athlon64 ?
Nobuo T schrieb:
tasti schrieb:
Man kann doch mit irgendwelchen Asm Interrupts in einen Grafik Modus wechseln (glaub Standard VGA). So richtig glücklich wirst du allerdings nicht damit werden, denn wirst kaum eine Auflösung über 640x480 kriegen.
Jo, mit VGA kommst du nicht ueber 640*480, jedoch gibt es (AFAIK seit 1993) so einen netten Standard (VESA), der auch hochaufloesende Grafikmodi unterstuetzt.
Mit meinem 10Jahre alten 486DX-Board bekomme ich so auch schon 1024x768x8 hin - und das ganz ohne Windows oder dx.Jups -> Siehe Arachne Browser, Zocks auf der BUILD Engine, etc. pp
-
Lodrill schrieb:
Wenn ich die allgemeinen Bibliotheklen nehme (Wird im allgemeinen die "Engine" benutzen bezeichnet)
Irgendwie habe ich das Gefühl, dass du nicht mal genau weißt, WAS eine Engine genau ist.
-
Sgt. Nukem schrieb:
Öhh... hattest Du ihn nicht erst noch unterstützt?!?
Und das tue ich auch weiterhin
ich finde nur, dass es unnötig ist sich mit hardware/systemabhängigen details rumzuschlagen wenns auch einfach geht, ohne assembly und ohne c-interrupts (die in windows sowieso nicht mehr funktionieren. Man müsste außerdem dann im real-dos mode programmieren...kannste vergessen)
Ich sagte ja, der screen-array ist schon sehr low-level, und damit kann ers versuchen. Dann kann er ganz normal im win-mode auch mit high-level sprachen programmieren (best of both worlds). Wenn ihm das nicht low-level genug ist bzw. er auch was programmiersprachen betrifft low-level sein will, kann er ja problemlos assembler machen.
Edit: @nobuto t: du meinst das geht mit ganz normalen c-softwareinterrupts? Kennst eine empfehlenswerte referenz dazu? (ich meine was vesa betrifft)
-
Sgt. Nukem schrieb:
Mal 'ne ernsthafte Frage: Läuft das eigentlich auch auf Athlon64 ?
Ja, AFAIK ist auch der 64Bitter noch voll x86-kompatibel.
randa schrieb:
@nobuto t: du meinst das geht mit ganz normalen c-softwareinterrupts? Kennst eine empfehlenswerte referenz dazu? (ich meine was vesa betrifft)
Eigentlich sollte das funktionieren - sowohl im Real-, wie auch im Protected-Mode (DPMI spiegelt normalerweise alle RealMode-Interrupts).
Die VBE3.0-Spezifikationen gibt's direkt bei der Quelle:
http://www.vesa.org/standards_summaries.html
-
Also mein lustiges Assemblergefrumsel läuft auch noch problemlos unter W2k. Code ähnlich wie oben. Wenn noch jemand sowas fertig hat, können wir ja mal vergleichen, was kühler is.
Bye, TGGC \-/
-
TGGC schrieb:
Assemblergefrumsel