forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   CreateTexture (http://forum.boolean.name/showthread.php?t=4005)

DMX 25.07.2007 22:03

CreateTexture
 
Помогите сделать так чтобы чёрный цвет был прозрачен


Graphics3D 800,600,32,2
SetBuffer BackBuffer()
camera = CreateCamera()
CameraClsColor camera,0,64,128
cube = CreateCube()
PositionEntity cube,0,-1,5
light = CreateLight()

tex = CreateTexture(64, 64)
SetBuffer TextureBuffer(tex)
Color 150, 150, 150
Rect 0, 0, 64, 64, 0
EntityTexture cube, tex
ScaleTexture tex, 0.2, 0.2
SetBuffer BackBuffer()


While Not KeyHit(1)

TurnEntity cube,1,0,-0.2

RenderWorld
UpdateWorld
Flip
Wend
End

moka 26.07.2007 13:26

Re: CreateTexture
 
LockBuffer
UnlockBuffer
WritePixel
ReadPixel
Вот комманды которые тебе нужны, в справке есть примеры по работе с ними.

Platon 26.07.2007 13:39

Re: CreateTexture
 
Для загружаемых текстур просто указывай флаг 4 при загрузке, для создаваемых маску надо делать через альфаканал, вот тебе функция
Код:

Function MaskTexture(Texture, Red, Green, Blue)
        Local MaskColor = (Red Shl 16) Or (Green Shl 8) Or Blue
        Local MaskSizeX = TextureWidth(Texture)
        Local MaskSizeY = TextureHeight(Texture)
        Local MaskBuffer = TextureBuffer(Texture)
        LockBuffer(MaskBuffer)
        For x = 0 To MaskSizeX
                For y = 0 To MaskSizeY
                        Pixel = ReadPixelFast(x, y, MaskBuffer) And $00FFFFFF
                        If (Pixel = MaskColor) Then
                                WritePixelFast(x, y, Pixel, MaskBuffer)
                        Else
                                WritePixelFast(x, y, Pixel Or $FF000000, MaskBuffer)
                        EndIf
                Next
        Next
        UnlockBuffer(MaskBuffer)
End Function

Текстуре укажи флаг 4 или 2, и с помощью этой функции установи маску на нужный цвет.

Зы
В принципе можешь сразу указывать прозрачность, во время рисования в текстуру, но так более универсально.

DMX 26.07.2007 19:21

Re: CreateTexture
 
Спасибо конечно огромное. Но нельзя ли поконкретней специально для этого кода.

Horror 26.07.2007 20:05

Re: CreateTexture
 
Ну типо ?подозреваю что так :
tex = CreateTexture(64, 64)
SetBuffer TextureBuffer(tex)
Color 150, 150, 150
Rect 0, 0, 64, 64, 0
SetBuffer BackBuffer()

MaskTexture(Tex, 0, 0, 0) ;0,0,0 -черный цвет

EntityTexture cube, tex


DMX 26.07.2007 22:00

Re: CreateTexture
 
Неработает

Platon 26.07.2007 22:50

Re: CreateTexture
 
Ты читать умеешь? Я же написал - текстуре ставить флаг 4 или 2! Третий параметр в CreateTexture().

DMX 27.07.2007 13:37

Re: CreateTexture
 
OK всё работает огромное спасибо

DMX 27.07.2007 20:09

Re: CreateTexture
 
Работает но с библиотекой винблитс3д не хочет. Не льзяли как нибудь по другому реализовать.

Platon 27.07.2007 23:42

Re: CreateTexture
 
А как связана "винблитс3д" и графика в Блиц?

HolyDel 28.07.2007 17:35

Re: CreateTexture
 
32битной должна быть и текстура и графический режим.


Часовой пояс GMT +4, время: 09:47.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot