WritePixel funktioniert bei mir nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

mevos

Betreff: WritePixel funktioniert bei mir nicht

BeitragDi, Okt 03, 2006 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich versteh es gerade irgendwie kein stück...
wieso zeichnet er kein Pixel?

Code: [AUSKLAPPEN]


Graphics3D 640,480

SetBuffer BackBuffer()


While Not KeyHit(1)
 rgb=Rnd(0,255)*$10000 + Rnd(0,255)*$100 + Rnd(0,255)



If KeyHit(2)
 SaveBuffer FrontBuffer(), "screenshot.bmp"
EndIf

If KeyHit(3)
 SaveBuffer BackBuffer(), "screenshot2.bmp"
EndIf

UpdateWorld
 RenderWorld

If KeyHit(57)
WritePixel prX#, prY#, rgb ,BackBuffer
EndIf

If KeyHit(48)
WritePixel prX#, prY#, rgb ,FrontBuffer
EndIf


 Flip
 Wend
End



Hab jetzt nicht den ganzen code gepostet.
Die Position an der der Pixel gezeichnet werden soll ist "prX#" und "prY#".

PSY

BeitragDi, Okt 03, 2006 22:04
Antworten mit Zitat
Benutzer-Profile anzeigen
weil prx# und pry# entweder 0 oder ausserhalb des sichtbaren bereiches sind

l8er,
psy
 

Dreamora

BeitragDi, Okt 03, 2006 23:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vor allem fehlen da die Klammern von BackBuffer() und FrontBuffer()
Ohne die Klammern steht da 0 -> passiert nix.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

PSY

BeitragMi, Okt 04, 2006 0:40
Antworten mit Zitat
Benutzer-Profile anzeigen
bei setbuffer backbuffer () sind die klammern zwingend notwendig, bei writepixel anscheinend nicht...hab ich aber eben auch erst gemerkt, dass das ohne funzt Wink

aber prinzipell sollte mans IMMER mit klammern schreiben, dann ist man immer auf der sicheren seite


l8er,
psy
 

Dreamora

BeitragMi, Okt 04, 2006 2:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha? Macht nicht sonderlich viel Sinn, denn FrontBuffer ohne Klammern ist eine Variable die 0 ist.

Auf der anderen Seite kommts eh nicht draufan. Du wirst mit tendenz eh nie was sehen, da du mit sicherheit mindestens 60x die sekunde flipst, womit der alte backbuffer zum frontbuffer wird und ein neuer Backbuffer kommt (nein es ist nicht so das der FrontBuffer zum Backbuffer wird - doch selbst wenn: der Backbuffer wird immer wieder gelöscht durch renderworld)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

PSY

BeitragMi, Okt 04, 2006 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Aha? Macht nicht sonderlich viel Sinn, denn FrontBuffer ohne Klammern ist eine Variable die 0 ist.

Auf der anderen Seite kommts eh nicht draufan. Du wirst mit tendenz eh nie was sehen, da du mit sicherheit mindestens 60x die sekunde flipst, womit der alte backbuffer zum frontbuffer wird und ein neuer Backbuffer kommt (nein es ist nicht so das der FrontBuffer zum Backbuffer wird - doch selbst wenn: der Backbuffer wird immer wieder gelöscht durch renderworld)


ich glaube du hast mich falsch verstanden.

ich sagte:
- bei dem befehl setbuffer backbuffer () sind die klammern zwingend notwendig
-WritePixel x, y, rgb ,BackBuffer funktioniert auch ohne klammern, man sollte aber prinzipiell immer () dazuschreiben, dann ist man auf der sicheren seite...

siehe mein voriges post Smile

l8er,
psy

Hubsi

BeitragMi, Okt 04, 2006 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
WritePixel x, y, rgb ,BackBuffer funktioniert auch ohne klammern,

Tut es nicht, lediglich WritePixel verwendet den aktuell gesetzten Buffer da FrontBuffer ohne Klammern, wie schon gesagt, nur eine Variable ist. Verhält sich auch bei jeder anderen Function so Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

PSY

BeitragMi, Okt 04, 2006 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hubsi hat Folgendes geschrieben:

Tut es nicht, lediglich WritePixel verwendet den aktuell gesetzten Buffer da FrontBuffer ohne Klammern, wie schon gesagt, nur eine Variable ist. Verhält sich auch bei jeder anderen Function so Very Happy


mh....
Code: [AUSKLAPPEN]

Graphics 640,480

;SetBuffer FrontBuffer()

While Not KeyHit(1)
   rgb=Rnd(0,255)*$10000 + Rnd(0,255)*$100 + Rnd(0,255)
   WritePixel Rand(640),rand(480),rgb ,BackBuffer
   Flip
Wend

End


funktioniert, genauso wie

Code: [AUSKLAPPEN]
Graphics 640,480

SetBuffer FrontBuffer()

While Not KeyHit(1)
   rgb=Rnd(0,255)*$10000 + Rnd(0,255)*$100 + Rnd(0,255)
   WritePixel Rand(640),rand(480),rgb ,BackBuffer
   Flip
Wend

End


im ersten beispiel ist gar kein buffer vorher definiert, im zweiten explizit frontbuffer...trotzdem funktionieren beide beispiele.

oder reden wir aneinander vorbei? Wink

l8er,
psy
 

Dreamora

BeitragMi, Okt 04, 2006 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja tut ihr. Denn wenn kein Buffer definiert ist, ist der aktive Buffer per Default der FrontBuffer.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

PSY

BeitragMi, Okt 04, 2006 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
naja es ging ja eigentlich darum, dass WritePixel funktioniert ohne () nach backbuffer...und das tuts ja, egal ob am anfang nix, setbuffer backbuffer() oder setbuffer frontbuffer() steht...
 

Dreamora

BeitragMi, Okt 04, 2006 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das glaubst, wünschen wir dir viel Spass dabei.
Aber frag dich dann einfach nicht, warum etwas nicht geht.


Blitz Funktionen geben nur einen Wert zurück, wenn die () dran sind. BackBuffer() -> gibt etwas zurück BackBuffer ist zwar auch gültig, gibt aber nichts zurück -> 0 -> default buffer wird genutzt.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

PSY

BeitragMi, Okt 04, 2006 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Dreamora hat Folgendes geschrieben:
Wenn du das glaubst, wünschen wir dir viel Spass dabei.
Aber frag dich dann einfach nicht, warum etwas nicht geht.


Blitz Funktionen geben nur einen Wert zurück, wenn die () dran sind. BackBuffer() -> gibt etwas zurück BackBuffer ist zwar auch gültig, gibt aber nichts zurück -> 0 -> default buffer wird genutzt.



ich benutz prinzipiell die (), also hab ich keine probleme.

was mich gewundert hat, ist dass punkte auf dem bildschirm erscheinen.

ich dachte halt, wenn man flippt würde man nix sehen, wenn man auf den frontbuffer zeichnet, sondern nur wenn man auf den backbuffer zeichnet. deshalb kam ich darauf, dass bei dem beispiel auf den backbuffer gezeichnet werden muss, da man ja was sieht.

jetzt weiss ich, dass man auch was sieht, wenn man auf den frontbuffer zeichnet und flippt.

das beispiel GING also zwar, ich habe dieses "funktionieren" halt falsch interpretiert Embarassed

naja wieder was dazugelernt.

ich benutz eh immer klammern Cool

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group