forum.boolean.name

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

maximus009 16.03.2009 03:46

Черно-белое
 
Извеняюсь если было уже:@ можно как-нибудь сделать изображение черно-белым (нужно для паузы)??

BlackDragon 16.03.2009 08:36

Ответ: Черно-белое
 
Возможно я ошибаюсь, но кажись это можно сделать с помощью команды SetGamma

NitE 16.03.2009 14:49

Ответ: Черно-белое
 
этого ненадо делать с помощью SetGamma потомучто команда гавно и неработает

надо сделать перед камерой куб (чайлд) альфу ему поставить 0 и цвет серый, когда надо альфу ставим на 0.5

IGR 16.03.2009 14:57

Ответ: Черно-белое
 
Цитата:

надо сделать перед камерой куб (чайлд) альфу ему поставить 0 и цвет серый, когда надо альфу ставим на 0.5
ты уверен что быдет ЧБ ??

Цитата:

(нужно для паузы)
если уж так то можно взять картинку в последный момент перед паузой и перерисовать ее в ЧБ любым простым алгоритмом !! потом можно натянуть как текстуру на квад перед камерой !!
хотя конечно хз... "паузы" бывают разные !! :)

HolyDel 16.03.2009 15:18

Ответ: Черно-белое
 
вот были бы шейдеры, можно было бы сделать честное ЧБ, а так, dot3 вам в помощь. будет что то похожее.

ABTOMAT 16.03.2009 16:25

Ответ: Черно-белое
 
Если для паузы - можно скопировать буфер экрана в картинку, программно в ней все пиксели сделать чёрно-белыми и отрисовать на экран.
Я в своё время это делал, работало, но на процесс чтение из картинки+зачёрнобеливание+запись в bmp при разрешении 1280*1024 уходило секунды 4. Может, исходники поищу. Так что тут быстро не получится.

maximus009 16.03.2009 19:11

Ответ: Черно-белое
 
Я так и думал, что весь буфер копировать, ладно спс, я лучше придумаю что-нибудь пооригинальнее для паузы.

ABTOMAT 16.03.2009 19:36

Ответ: Черно-белое
 
Ну я не говорил что этот способ единственный, просто на FFP так или иначе получится через жопу. Шейдерами - быстро и просто (даже я делал), но чего нема, того нема :(
З.Ы. Блюр бы подошёл для паузы.

maximus009 16.03.2009 19:38

Ответ: Черно-белое
 
:) Я блюром и сделал, в ашадов всего одной командой ))

HolyDel 16.03.2009 21:19

Ответ: Черно-белое
 
я имел ввиду что то вроде этого:

Код:

Graphics3D 640,480,32,2

For i = 1 To 100
        c = CreateCube()
        PositionEntity c,Rnd(-100,100),Rnd(-100,100),Rnd(0,200)
        EntityColor c,Rnd(0,255),Rnd(0,255),Rnd(0,255)
        RotateEntity c,Rnd(0,360),Rnd(0,360),Rnd(0,360)
        ScaleEntity c,Rnd(1,10),Rnd(1,10),Rnd(1,10)
       
Next

For i = 1 To 100
        c = CreateSphere()
        PositionEntity c,Rnd(-100,100),Rnd(-100,100),Rnd(0,200)
        EntityColor c,Rnd(0,255),Rnd(0,255),Rnd(0,255)
        RotateEntity c,Rnd(0,360),Rnd(0,360),Rnd(0,360)
        ScaleEntity c,Rnd(1,10),Rnd(1,10),Rnd(1,10)
       
Next

cam = CreateCamera()
l = CreateLight()

tex = CreateTexture(1024,512,1+256+512)
TextureBlend tex,4
ScaleTexture tex, 1024.0/GraphicsWidth(),512.0/GraphicsHeight()

spr = CreateSprite(cam)
PositionEntity spr, 0,0,1.3333333333333333
ScaleSprite spr, GraphicsWidth()/Float(GraphicsHeight()),1

EntityTexture spr,tex

HideEntity spr

While Not KeyDown(1)
       
        If KeyDown(203) Then TurnEntity cam,0,-1,0
        If KeyDown(205) Then TurnEntity cam,0,1,0
        If KeyDown(208) Then TurnEntity cam,-1,0,0
        If KeyDown(200) Then TurnEntity cam,1,0,0
       
        RenderWorld
       
        If KeyDown(25)
                paused = 1
        ;        Viewport(0,0,256,256)
                CopyRect(0,0,640,480,0,0,BackBuffer(),TextureBuffer(tex))
                ShowEntity spr
        ;        Viewport(0,0,640,480)
        EndIf
       
        While KeyDown(25) : Delay(1) : Wend
       
        While paused
                RenderWorld
                Flip
               
                If KeyDown(25)
                        HideEntity spr
                        paused = 0
                       
                        While KeyDown(25) : Delay(1) : Wend
                EndIf
        Wend
       
        Flip
Wend


maximus009 16.03.2009 21:22

Ответ: Черно-белое
 
Неплохо, только долговато)

HolyDel 16.03.2009 21:25

Ответ: Черно-белое
 
я хз. на блице давно ничего не писал. но вроде все должно быть аппаратно. эксперты, поправьте если не так.

upd на моей машине копирование с бакбуффера в текстуру занимает меньше миллисекунды.


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

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