Problem: createtexture() erstellt eine textur mit alpha

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Xaymar

ehemals "Cgamer"

Betreff: Problem: createtexture() erstellt eine textur mit alpha

BeitragMo, Nov 10, 2008 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Leider ist mir schon öfters vorgekommen das createtexture() mir eine textur zurücklieferte mit Exclamation alphachannel obwohl diese einfach nur als 16bit drinne sein sollte. auch im 16bit modus ist die textur 32bit
hat jmd dafür ne lösung?
Mich ärgert das ganz schön, da ich mir rect/line/plot neuschreiben musste(um auf 32bit auch alpha zu haben)

Mfg
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 11, 2008 0:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit mir bekannt sind Texturen immer 32 Bit, da das so in der Hardware fest verankert ist. Selbst ''16'' Bit Texturen werden erst im letzten Schritt bei der Darstellung umgerechnet. Das ist so, weil so grundlegende Sachen fest in der Hardware verankert diese eben am schnellsten rechnen lässt. Würde man so grundlegende Sachen auch noch variabel machen, so würde es ein unnütz erhöhten Rechenaufwand bedeuten. Das ist auch der Grund, warum 24 Bit Farbtiefe bereits seit mehreren Jahren keine Grafikkarte mehr unterstützt.

Im übrigen ist ein manuelles Umrechnen unter Blitz doch wirklich sehr einfach. Um den Alphachannel zu füllen, muß als Farbe einfach +$FF000000 hinzuaddiert werden. Bedenke aber, dass CreateTexture im Mode 2 und andere, bei manchen Grafikkarten nicht richtig funktionieren. Es gibt dazu Hier was zu lesen. Als Workaround kann man aber leere Texturen laden und diese dann nach belieben bemalen. Was beudetet, dass alle Größen dann aber auch so vorliegen müßen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Xaymar

ehemals "Cgamer"

BeitragDi, Nov 11, 2008 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
mmh... das erste weiß ich ja, aber der verdammte(kack) alpha channel stört mich... aber wird schon iwie hinhauen...

Mfg
Warbseite

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDi, Nov 11, 2008 15:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab grad mal ein paar Tests durchgeführt. Es scheint so zu sein, dass im 16 Bit Grafikmodus erstellte Texturen eine 5,6,5 Bit-Aufteilung haben, während geladene eine 4,4,4,4 Bit-Aufteilung zugeteilt bekommen ganz ungeachtet ihrer Quelle. Also auch BMP-Dateien die nur 24 Bit oder 12 Bit (4 Bit pro Farbkanal) gespeichert haben.

Hier mein erstes Testprogramm ohne Erzeugung eines Alphachannels:

Code: [AUSKLAPPEN]
Graphics3D 800,600,16,1
SetBuffer BackBuffer()

Local Timer=CreateTimer(100)
Local Camera=CreateCamera()
Local Sprite=CreateSprite()
Local Texture=CreateTexture(256,256,48)
Local X,Y

For Y=0 To 255
   For X=0 To 255
      WritePixel X,Y,X*$10000+X*$100+X,TextureBuffer(Texture)
   Next
Next

CameraClsColor Camera,255,0,0
EntityTexture Sprite,Texture
PositionEntity Sprite,0,0,2

RenderWorld
Flip

WaitKey
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group