Draw3D Zeichnen Problem
Übersicht

GastBetreff: Draw3D Zeichnen Problem |
![]() Antworten mit Zitat |
|
---|---|---|
Hallo Leute,
ich habe das Problem, dass ich ein IMG in Draw3D in einen Type lade, und es dann in einer Function Zeichnen will. Ich weis, das dies nicht duíe eleganteste methode ist, aber ich finde keine passende andere Lösung. Das Problem ist nun, dass das Bild nicht gezeichnet wird. Draw3D ist geladen, das Image hat ein Handle(144), und Ich Gehe in den Backbuffer, zeichne das Bild und Rendere, Flip ist drinnen und lasse mir Variablen anzeigen. Was ist hier falsch, an diesem Code: [AUSKLAPPEN] ; Gui.bb ; Images Graphics3D 1280,800,0,1 SetBuffer BackBuffer() Global Camera = CreateCamera() Include "Draw3d.bb" DrawInit3D(Camera) Global GUI_l = LoadImage3D("GUI\left.png") Global GUI_r = LoadImage3D("GUI\righ.png") Global I Global Win.Window = Null CreateWindow("Test",0,0,400,200) Repeat DrawGui UpdateWorld() RenderWorld() Text 0,0,I win.Window = Last window Text 0,10,Win\IMG Flip Clear3D Until KeyDown(1) ; Types Type Window Field T$ Field X Field Y Field W Field H Field IMG ;Field Button.Button End Type Function CreateWindow(T$,X,Y,W,H) win.Window = New Window Win\T = T$ Win\X = X Win\Y = Y Win\W = W Win\H = H Win\IMG = LoadImage3D("GUI\mid.png",2,2,W-8,1) End Function Function DrawGUI() ; Windows I = 0 For Win.Window = Each window I = I +1 ;Titelleiste DrawImage3D(Win\IMG,0,0) Next End Function Es gibt keine Fehlermeldung. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich denke das W-8 schonmal ein Problem sein dürfte ''Win\IMG = LoadImage3D("GUI\mid.png",2,2,W-8,1)''. In der Verison 3.0 der Draw3D ist dies der Skallierungsfaktor. In der V.3.1 wird es der Ebenenpivot sein. Eine Skallierung um den Faktor 392 könnte ein Problem sein, wenn das Image nicht besonders klein (so um 0.5 Pixel) ist.
Für eine GUI würde ich im übrigen ganz anders vorgehen. So mit Quads und so, wo auch bereits berechtene Vertexpunkte wiederverwendet werden.^^ edit1: Um die Breite eines Bildes von den Skallierungsfaktor wieder zu Welteinheiten zu transformieren, geht man in deinem Beispiel wie folgt vor: ( W-8.0 ) / BreiteDesImagesInPixel |
||
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Danke Hectic.
wenn ich die Zeile Win\IMG = LoadImage3D("GUI\mid.png",2,2,W-8) in Win\IMG = LoadImage3D("GUI\mid.png",2,2,(W-8.0)/1) oder Win\IMG = LoadImage3D("GUI\mid.png",2,2,10,1) mache, nützt das nix, weil das bild sowieso die Breite 1 Pixel hat. die Zehn ist als Platzhalter. Selbt Modus = 1 (Colormap) nützt nichts. Ich lade das Bild mal hoch: https://www.blitzforum.de/upload/file.php?id=2574 hier als Bild: |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hmmmmmmmmm, also bevor du hier versucht etwas hinzu biegen, was nur schwer zu handhaben ist, so schaue dir mal DrawQuad3D aus der Version Draw3D V.3.1 mal an. Die Version ist absolute Beta, und ich arbeite auch grad noch an der neuen Version.
http://www.hectic.de/data/Draw3D.V.3.1.Beta.rar Solltest du auch viel mit nativen Befehlen arbeiten, so gib mir bescheid, dass ich dir die Beta 2 (dieser Version ist noch nicht zusammen gefasst) zukommen lasse, denn grad bei den nativen Befehlen ändert sich so einiges. Hier eine Betatester-Schnelldoku (V.3.1 Beta 1): Code: [AUSKLAPPEN] [Fehler behoben] Meldung ''DrawBank is to small'' kam durch ein Rechenfehler 48mal früher (so nach ~170 Imagehandles) als erwartet.
[Befehl erweitert] Clear3D( MainHandle ) kann nun ein Mainhandle beinhalten, wenn man nur ein Surface löschen will. Praktisch im Zusammenhang im ClearOn3D() und ClearOff3D(). [Neuer Befehl] ClearOff3D( MainHandle ), deaktiviert ein Surface aus der ''allgemeinen Löschliste'', welches per Clear3D() gelöscht werden würde. [Neuer Befehl] ClearOn3D( MainHandle ), aktiviert ein Surface zur Löschung wieder, welches durch ClearOff3D() aus der Liste deaktiviert wurde. [Neuer Befehl] CreateImage3D( 2^Size, Mode=2, Blend=2, Pivot=0 ), Erstellt ein neues Bild im Speicher (Bsp: Size=8 ergibt 2^8=256 also eine Größe von 256x256). [Neuer Befehl] DrawFree3D(), macht die DrawInit3D() -Initialisierung wieder rückgängig. Dabei werden auch alle Bilder wieder aus dem Speicher wieder freigegeben. [Befehl erweitert] DrawImage3D( Handle, X, Y, Button=0, Angle=0, Scale=1, Frame=0 ), mit Frame kann man weiterführende Frames anzeigen lassen. [Neuer Befehl] DrawQuad3D( Handle, X1, Y1, X2, Y2, X3, Y3, X4, Y4, Frame ), zeichnet ein Quad aus einem zuvor geladenem Image auf dem Bildschirm. [Neuer Befehl] GetPixel3D( Handle, X, Y, Mask=$FFFFFFFF ), gibt den (automatisch maskierten und sortierten) Pixelfarbcode zurück. [Neuer Befehl] GetTexel3D( Handle, Xs, Ys, Xt, Yt, Angle, Scale=1, Mask=$FFFFFFFF ), gibt den Pixelfarbcode abhängig der Bildposition zurück. [Befehl erweitert] ImageLine3D( Handle, X1, Y1, X2, Y2, Size, Mode=0, Frame=0), mit Frame kann man weiterführende Frames anzeigen lassen. [Befehl geändert+erweitert] LoadImage3D ( ''File'', Mode=2, Blend=2, Pivot=0 ), Alphakanal nun automatisch setzbar und mit Pivot bestimmt man die Zeichenposition. [Befehl erweitert] NativeInit3D( Mode=2, Blend=2, Pivot=0 ), gibt nun das Handle zurück und mit Pivot bestimmt man die Zeichenposition zwischen HUD und World. [Neuer Befehl] OnLockBuffer3D( Handle ), lockt den Buffer für Pixeloperationen (nur bei CreateImage3D notwentig). [Neuer Befehl] Poly3D( X1, Y1, X2, Y2, X3, Y3 ), zeichnet ein Polygon, bestehend aus einem Dreieck als nativen Befehl ein. [Neuer Befehl] SetPixel3D( Handle, X, Y, ARGB=0 ), setzt ein Pixel an angegebener Position mit dem ARGB-Farbcode auf ein bestehendes Bild. [Neuer Befehl] SetTexel3D( Handle, Xs, Ys, Xt, Yt, Angle, Scale=1, ARGB=0 ), setzt ein Pixel abhängig der Bildposition auf ein bestehendes Bild. [Neuer Befehl] StringWidth3D( ''String'' ), gibt die Stringbreite in Draw3D-Einheiten abhängig ihrer Größe zurück. In Zukunft fällt weg: - NativeInit3D - CreateTexture3D - ev. On/Un -LockBuffer3D edit1: P.S. Bitte nur ausschliesslich quadratische Texturen für die Draw3D verwenden!!! |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Gast |
![]() Antworten mit Zitat |
|
---|---|---|
Dieser Post hat mir richtig geholfen....
Vorallem DrawQuad3D... Danke hectic! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group