DLL Dateien...

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

ChrisAttack

Betreff: DLL Dateien...

BeitragSa, Apr 24, 2004 14:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine frage... (was auch sonst)

wie erstelle/benutze ich dll dateien? also ich erstelle sie in c++, das weiß ich. kennt jemand ein tut dazu? Also könnte ich eine .dll datei schreiben in der eine function zur textausgabe schreiben, die print_neu heißt, und diese dann in bb benutzen???
B3D
MSVC++
DX9SDK

Vertex

BeitragSa, Apr 24, 2004 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!
Tut gibt es im FAQ Bereich, es ist nix weiter als das Du eine Export-Compilerdirektive
benutzt, und dem Linker sagst, das er eine DLL erzeugen soll.
Eine neue Printalternative ist schwer zu realisieren.
Mit BackBuffer() erhält man einen Pointer zu einer Blitzstructure die unteraderem
Höhe, Breite und Farbtiefe enthält. Das wichtigste an ihr ist aber, das sie ebenfalls
einen Pointer zum Videobuffer enthält. Diesem kann man extern in sehr hoher
Geschwindigkeit schreiben und auslesen(schneller als es mit Write/ReadPixelFast geht)
In ihm könnte man dann auch einen Text reinschreiben lassen. Einfacher
wäre aber ersteinmal eine Rotine für das einzeichnen eines Rechteckes zu
schreiben, da man hier nicht auch Schrioftart etc. achten muss.
mfg olli

Edit: Hier alle Infos dazu:
BackBuffer(), FrontBuffer(), ImageBuffer(Image, Frame) und event.
TextureBuffer(Texture, Frame) geben die Adresse einer Struktor
zurück.
Zitat:
Adresse + 28 = Breite des Buffers in Pixel | 4 Byte Integer
Adresse + 32 = Höhe des Buffers in Pixel | 4 Byte Integer
Adresse + 44 = Farbtiefe in Bit des Buffers | 4 Byte Integer
Adresse + 76 = Pointer zum Videobuffer das ein Videographicarray ist der
Breite * Höhe * Farbtiefe / 8 Byte groß ist


Und wegen der DLL in C++:
Code: [AUSKLAPPEN]

#define BBDECL extern "C" __declspec(dllexport)
#define BBCALL __stdcall

BBDECL int BBCALL Addition(int A, int B);
BBDECL int BBCALL Addition(int A, int B) {
   return A + B;
}
vertex.dreamfall.at | GitHub

ChrisAttack

BeitragSa, Apr 24, 2004 15:06
Antworten mit Zitat
Benutzer-Profile anzeigen
danke... hab hier gefunden.... sieht ganz gut aus
B3D
MSVC++
DX9SDK
 

Edlothiol

BeitragSa, Apr 24, 2004 15:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm... Kann man in C++ ganz normal auch auf den VideoRAM zugreifen? Ohne irgendwelche DX - Befehle, wie auf normales RAM? Das wäre ja lustig...

TheShadow

Moderator

BeitragSa, Apr 24, 2004 15:53
Antworten mit Zitat
Benutzer-Profile anzeigen
sicher geht es - hast du meine Alpha-DLL gesehen?

http://www.blitzbasic.com/tool...hp?tool=38
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Vertex

BeitragSa, Apr 24, 2004 15:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja kann man, die Adresse ist 0xA000 für EGA und CGA war es aber glaube
ich 0xB000. Um zu ermitteln, welche Auflösungen es gibt und diese auch
zu setzen, benötigt man aber Inlineassembler. Für die kleinen Modis bis
640 * 480 * 256 Farben ist das noch sehr simpel mit Int 10h bei hören Auflösung
muss man mit SVGA arbeiten: http://www.iconsoft.de/TUTORIAL/svga.htm
(Für QB kann man aber natürlich in C++ umsetzen)
mfg olli
vertex.dreamfall.at | GitHub

TheShadow

Moderator

BeitragSa, Apr 24, 2004 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
nö VRAM ist weiter hinten - diese A000 ist ein uraltes-pre-windows-ding - das ist nur gut, wenn man ein eigenes OS coden will oder in DOS codet... Ob A000 überhaupt auf VRAM liegt weiß ich nicht - ich denke einfach nur im RAM
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group