Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
17.07.2001, 19:15
gerk



Also:
Wie kan ich die Auflösung in alten DOS-C++ programmen ändern und wie kann ich grafik einbinden (gibbet da acuh was wie LINE, CIRCLE,... wie in qb??)

thx ij voraus

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“

zum Seitenanfang zum Seitenende Profil || Suche
001
17.07.2001, 20:26
Hanky



keine Ahnung, aber auf Netzkurse.de solltest du bei c++ hilfe bekommen....nicht nur in den 2 Fragen..

--

hankYs Page

zum Seitenanfang zum Seitenende Profil || Suche
002
17.07.2001, 20:51
blair



ich quote mal direct aus meiner alten 3d engine, ich gebe keine garantie das es funktioniert, und übernehme auch keine Haftung für sachen die schief gehen könnten.

Quellcode:
void SetGraphicMode(int mode)
{
  union REGS outregs,inregs;
  
  inregs.h.ah=0;
  inregs.h.al=(unsigned char)mode;

_int86(0x10,&inregs,&outregs);
}

Mode kann folgendes sein:

Mode in Hex- XxYxFarben

1 - 40x25x15
3 - 80x25x16
4 - 320x200x4
7 - 80x25xMono
D - 320x200x16
E - 640x200x16
F - 640x350xMono
10 - 640x350x16
11 - 640x480xMono
12 - 640x480x16
13 - 320x200x256

Das ist was ich damals verwendet habe, es gibt auch noch Mode Z, aber damit hab ich mich weniger beschäftigt.

Ich hoffe es hat dir was gehofen, aber wie gesagt weder garantie noch haftung.

<EDIT>

Ach deine zweite frage hatte ich ganz übersehen:

Also, es gibt zwar Graphikfunktionen (ich glaub in graph.h), aber die sind recht lahm (ich behaupte das meine schneller sind).

Deine eigenen grafik funktionen zum schreiben ist ansich recht einfach, du musst dazu folgendes wissen:
Der Video speicher beginnt bei 0xA000h, wenn du darauf zugreifen möchtest, machst du also folgendens:

Quellcode:
videobuffer=(unsigned char far*)0xA0000000L;

Jetzt kannst du ganz einfach per

Quellcode:
videobuffer[position]=farbe;

Einen Pixel plotten. Nun wie ergibt sich diese zahl ? (Ich sollte anmerken das ich mode 13 verwende, da dass der einzig sinnvolle ist der genug farben bietet)
Position ergibts sich wie folgt:

Quellcode:
videobuffer[y*320+x]=farbe;

Das ganze lässt sich noch beschleunigen und in eine nette Funktion packen, dann haben wir folgendes:

Quellcode:
void PutPixel(int x,int y, int color)
{
  videobuffer[((y<<8)+(y<<6))+x]=(unsigned char)farbe;
}

Die beschleunigung die wir vorgenommen haben nennt sich binary shifting, aber ich habe jetzt keinen bock das zu erklären...
Nun bleibt noch die frage nach der farbe, und das ist auch nicht so einfach wie ich mir das wünschen würde, denn dazu wird eine color lookup table verwendet (eine art farb pallete), aber ich hab jetzt keinen bock das zu erklären, darum rate ich dir dich ein bisschen im netz umzugucken.

Viel spass damit! (und wie gesagt, keine garantie und keine haftung)

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs


Dieser Beitrag wurde am 17.07.2001 um 21:08 von Blair bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
003
19.07.2001, 13:54
gerk



thx!
werd ich mich mal näher damit beschäftigen..

--

„Und da wir uns ja seit heute etwas näher gekommen sind, kann ich nur sagen: Mir hilft da immer Norther volle Lautstärke (so wie jetzt), sodass die ganzen unrasierten, Wasserpfeife rauchenden, alternativen Wichsstudenten aus ihren, aus Bananenschalen und Abfall gebastelten, Sitzkissen fliegen.“

zum Seitenanfang zum Seitenende Profil || Suche
004
19.07.2001, 17:23
Polymorph



Jo, also im Prinzip alles richtig... Ich denke nur du kannst mit den meisten compilern es vergessen einfach so den video speicher zu beschreiben... Ich quote mal wieder ne flipCode URL... und ja ich mag die site sehr gern 8)

http://www.flipcode.com/demomaking/

Das ist n ganzer Kurs fuer DJGPP (http://www.delorie.com/) fuer DOS, wie man Mode 13h und VideoBuffer beschreibt etc.

Viel Spass...

--

----------------------------------------
[url="mailto:polymorph@gdnmail.net"]Polymorph[/url]
Lead Programmer of Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche
005
19.07.2001, 17:31
blair



es geht ja auch um DOS, das das unter windows nicht geht ist mir auch klar. ehrlich ;)

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche
006
19.07.2001, 17:47
Polymorph



neinnein... ich rede auch gar nich von windows, sondern von DOS 32-bit protected mode (DPMI/VCPI)... du kannst ja den speicher nur direkt ansprechen wenn du im real-mode bist, aber die meisten compiler fuer DOS sind ja inzwischen auch nur noch protected mode... keine Kritik an deinem Code, der ist schon richtig, funzt halt nur unter real mode... Wenn du aber protected mode bist, dann halt nur wenn du dir auch segment und offset holst.

--

----------------------------------------
[url="mailto:polymorph@gdnmail.net"]Polymorph[/url]
Lead Programmer of Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche
007
19.07.2001, 18:58
blair



ach alles käse, lang lebe 16 Bit DOS (mit alles Käse meine ich nicht deine aussage, die ist korrekt, ich meine 32 Bit Dos)

--

because our freedom sits at the end of a gun
we're all here getting beat up and held back
we're all here digging knives from our backs

zum Seitenanfang zum Seitenende Profil || Suche
008
19.07.2001, 20:12
Polymorph



Ja schon klar 8) Ich hab das als ich Newbie war auch mal ausprobiert hehe, ging einfach nich und ich habs nich geschnallt :)

--

----------------------------------------
[url="mailto:polymorph@gdnmail.net"]Polymorph[/url]
Lead Programmer of Paroxysm - Alien Encounters

zum Seitenanfang zum Seitenende Profil || Suche