Problem mit SetViewport bei Direct3D9 Treiber

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Thunder

Betreff: Problem mit SetViewport bei Direct3D9 Treiber

BeitragSo, Okt 17, 2010 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

mir ist gerade aufgefallen, dass sich SetViewport beim neuen Direct3D Treiber anders verhält als bei den anderen Treibern. Wenn ich nämlich SetViewport einen Bereich übergebe, dessen X- oder Y-Koordinate negativ ist, sind alle darauffolgenden Zeichenbefehle nutzlos.

Ich habe hier ein kleines Beispiel zusammengestellt, bei dem man mit der Maus ein Rechteck herumziehen kann, um das ein Viewport gesetzt wird, sodass die Schrift abgeschnitten wird.
Konkretes Problem: Wenn man mit dem Rechteck in den negativen Bereich fährt, wird es "unsichtbar".
(ggf. Treiber an markierter Stelle ersetzen)
BlitzMax: [AUSKLAPPEN]
SuperStrict
Framework brl.blitz
Import brl.max2d
Import brl.d3d9max2d
Import brl.d3d7max2d
Import brl.glmax2d
Import brl.timer

SetGraphicsDriver D3D9Max2DDriver() 'Hier Treiber ersetzen

Const GWIDTH:Short=640
Const GHEIGHT:Short=480

Global timer:TTimer=CreateTimer(60)

Graphics GWIDTH,GHEIGHT,0,60,2

Global x%=GWIDTH/2-50,y%=GHEIGHT/2-30
Local mxs%,mys%

SetClsColor 20,20,80
Repeat
Cls
mxs=MouseXSpeed()
mys=MouseYSpeed()
SetViewport x,y,100,60
SetColor 50,20,20
DrawRect 0,0,GWIDTH,GHEIGHT
SetColor 0,255,0
DrawText "ABCDEFGHIJKLMNOPQRSTUVWXYZ",x-50,y+20
SetViewport 0,0,GWIDTH,GHEIGHT
If mousein(x,y,100,60) And MouseDown(MOUSE_LEFT) Then x:+mxs;y:+mys
Flip 0
WaitTimer timer
Until AppTerminate() Or KeyHit(KEY_ESCAPE)
End

Function mousein%(x%,y%,w%,h%)
Return MouseX()>=x And MouseY()>=y And MouseX()<=x+w And MouseY()<=y+h
EndFunction


Meine Frage: Treten diese Probleme auch bei euch auf?
Falls Ja: Hat jemand eine Lösung parat?

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

mpmxyz

BeitragSo, Okt 17, 2010 17:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei mir läuft alles ganz normal. (Windows XP 32 bit, NVidia GT 120)
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer

Xeres

Moderator

BeitragSo, Okt 17, 2010 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich kann auch kein Fehlverhalten feststellen.
Neuer/Alter Grafikkartentreiber?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Thunder

BeitragSo, Okt 17, 2010 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Neuester Treiber. Vielleicht liegt es am Netbook mit der GMA-Grafikkarte, ich werde es später wo anders testen.
Danke erst Mal für den Hinweis.

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit

BtbN

BeitragSo, Okt 17, 2010 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Im Zweifelsfall einfch SetViewPort wrappen, sodass es nicht zu negativen Werten kommen kann:
BlitzMax: [AUSKLAPPEN]
Function SetViewport(x:Int, y:Int, w:Int, h:Int)
If x < 0 Then x = 0
If y < 0 Then y = 0
BRL.Max2D.SetViewport(x, y, w, h)
EndFunction

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group