|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Andt2018
Anmeldungsdatum: 22.12.2017 Beiträge: 7
|
Verfasst am: 22.12.2017, 19:19 Titel: Schnelleres Pset rendering :) |
|
|
Für Kritik würe ich mich freuen, bin neu hier..
Code: |
'Neues Pset
#undef pset
sub pset (y as uinteger,x as uinteger,c as ulong)
static s as ulong ptr
static w as uinteger
if s = 0 then
s = screenptr
screeninfo w
end if
s[(w*x)+y] = c
end sub
'Example
const sw = 800
const sh = 600
screenres sw,sh,32,2
dim as integer cx,fx
do
cx+=1
screenlock
for x as integer = 0 to sh-1
for y as integer = 0 to sw-1
pset y,x,(x*y) xor rgb(x+cx,y+cx,cx)
next
next
screenunlock
sleep 2
loop until inkey <> ""
|
[/code] |
|
Nach oben |
|
|
St_W
Anmeldungsdatum: 22.07.2007 Beiträge: 949 Wohnort: Austria
|
Verfasst am: 22.12.2017, 23:27 Titel: Re: Schnelleres Pset rendering :) |
|
|
Andt2018 hat Folgendes geschrieben: | Für Kritik würe ich mich freuen, bin neu hier.. | Willkommen hier im Forum! Da ich den selben Code vorhin auch im englischen Forum gesehen hab, würde mich interessieren, ob der Code von dir ist?
Deine Berechnung der Pixel-Speicher-Adresse ist verbesserungsdürftig, da sie bei bestimmten Auflösungen nicht korrekt funktionieren wird. Anstatt der Bildbreite solltest du nämlich den Wert "Pitch" für die Zeilenlänge (in Bytes) verwenden, da am Ende jeder Zeile ungenutzte Bytes vorhanden sein können. Du hast übrigens X und Y vertauscht - X bezeichnet normalerweise die horizontale Koordinate, Y die vertikale.
Zur Pointer Berechnung siehe auch:
https://www.freebasic-portal.de/befehlsreferenz/interne-pixelformate-464.html _________________ Aktuelle FreeBasic Builds, Projekte, Code-Snippets unter http://users.freebasic-portal.de/stw/
http://www.mv-lacken.at Musikverein Lacken (MV Lacken) |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|