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=3486)

ABTOMAT 30.05.2007 18:37

Как отрендерить в текстуру?
 
Пишу:

SetBuffer TextureBuffer (watertexture)
Text 640, 512, "ЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖЖ", True, True
RenderWorld


А оно не рендерит в текстуру! Буфер-то задан, а оно всё равно не хочет! Притом, что надпись "ЖЖЖЖ" на текстуре есть, хотя по идее, она должна быть скрыта результатом рендера. как такое объяснить?

З.Ы. Если вдруг нада, могу дать полн. текст сей проги.

jimon 30.05.2007 20:53

Re: Как отрендерить в текстуру?
 
flip не забываем .. (может я и ошибаюсь)

ABTOMAT 30.05.2007 20:58

Re: Как отрендерить в текстуру?
 
Но ведь надпись ЖЖЖЖ отобразилась!

Raiter 30.05.2007 21:25

Re: Как отрендерить в текстуру?
 
гы... имхо она и должна быть :)

axel186 30.05.2007 21:52

Re: Как отрендерить в текстуру?
 
В Хелпе же всё есть...

Код:


Graphics3D 640,480

Camera=CreateCamera()

Light=CreateLight()
RotateEntity light,90,0,0

Cube=CreateCube()
PositionEntity Cube,0,0,5

tex=CreateTexture( 256,256 )
SetBuffer TextureBuffer( tex )

ClsColor 150,200,250
Cls

Font=LoadFont( "arial",35,True )
SetFont Font
Color 0,0,255
Text 0,50,"This texture"
EntityTexture Cube,Tex

Repeat

TurnEntity Cube,1,1,1

UpdateWorld
RenderWorld
Flip
Until KeyHit(1)
End


Diplomat 30.05.2007 21:53

Re: Как отрендерить в текстуру?
 
ABTOMAT: "RTFM!" или "Господа, читайте Хелп, там всё сказано."

Команда RenderWorld рендерит картинку в задний буфер. В народе бытует распространенное заблуждение, что связка "SetBuffer+RenderWorld" что-то в этой ситуации изменит, но заблуждение и реальность - это всё-таки две большие, и одна мелкая разница...

Впрочем, цена всей мэгапроблемы тут, а равно и ёё решение- это добавленный в код CopyRect. О том, куда и зачем добавлять CopyRect - спрашивать не у форума, а у Хелпа.
Удачи!

P.S. Судя по приведенному сегменту кода, есть мнение, что автору темы следует также прочитать Хелп по команде UpdateWorld.

2 axel186: Заметьте! Автор спрашивал как отрендерить в текстуру мир, а не нарисовать на текстуре текст.

ABTOMAT 30.05.2007 22:15

Re: Как отрендерить в текстуру?
 
CopyRect пробовал, но он страшшно тормозит. Вопрос: из-за чего это происходит и как этого мона избежать?
Вот кусок кода, отвечающий за копирование прямоугольнега:
Код:

SetBuffer BackBuffer() ; снова ставим буфером задний буфер
  RenderWorld() 
  CopyRect 0,0,1280,1024, 0,0, BackBuffer(), TextureBuffer(watertexture)
  CameraProjMode cam, 1 ; вновь включаем основную камеру...
  CameraProjMode watercam, 0 ; ...и отключаем водяную.

З.Ы. А нельзя ли как-нить копировать не прямоугольник, а сразу весь BackBuffer? Всмысле, нету ли способа пошустрее?
З.З.Ы. Diplomat, а зачем мне UpdateWorld? Он ответственен за анимацию да коллизию, которых у меня нет пока что.

Diplomat 30.05.2007 22:39

Re: Как отрендерить в текстуру?
 
А, молодец, КопиРект осилил, значит соображаешь.

Однако- 1280х1024 - это ИМХО слишком. Текстура с такими масштабами должна быть "хотя бы" 2048х2048, да и вообще, прогнать такие обьемы быстро не получится... Разьясни подробнее суть вопроса, ибо здаётся мне, что-то принципиально не то творишь.

Если же чётко по сути вопроса, то заметно ускорить работу с текстурой можно поставив ей флаг 256 (см. Хелп). Но производительность всё равно будет весьма невелика.

P.S.
Цитата:

а зачем мне UpdateWorld?
- вот и я о том же. Зачем тебе, думаю, УпдейтВорлд прямо в коде рендеринга в текстуру? Только теперь, гляжу, ты его оттуда уже убрал путём тихого редактирования сообщения. Что-ж, разумное и своевременное решение. ))

ABTOMAT 30.05.2007 23:25

Re: Как отрендерить в текстуру?
 
Diplomat, дык я его давно осилил уже, просто искал способ сразу отрендерить в текестуру ничего не копируя, но, как я выяснил, шмоная Хелп,
Цитата:

Rendering to other buffers is currently not supported by Blitz3D.
Да за шо я им деньги платил? Шоб денно и нощно #йца чесали?!
З.Ы. Платил я или нет - это уже другой вопрос ;)


Цитата:

Разьясни подробнее суть вопроса, ибо здаётся мне, что-то принципиально не то творишь.
Diplomat, ты мне сам сказал как строить отраженя (две камеры - 1 основная - другая - подводная). Специально по этому поводу задавал много тупых вопросов относительно сурфэйса, смог назначить правильно текс. координаты, но лажанулся на такой вот пакости :(

З.Ы. огромное спасибо за подсказку насчёт флага 256 :-)

Цитата:

...путём тихого редактирования сообщения. Что-ж, разумное и своевременное решение. ))
Есть немного ;)

НУБ 30.05.2007 23:35

Re: Как отрендерить в текстуру?
 
мдя... решение под ногами....
Подсказываю:
Стандартными средствами блица в текстуру рендерить нельзя

ABTOMAT 30.05.2007 23:40

Re: Как отрендерить в текстуру?
 
Цитата:

решение под ногами валялось....
НУБ, шо за решение? флаг 256 решает проблему лишь частично.

Raiter 31.05.2007 00:55

Re: Как отрендерить в текстуру?
 
он намекает на нестандартные средства :-)

Diplomat 31.05.2007 01:00

Re: Как отрендерить в текстуру?
 
Цитата:

ты мне сам сказал как строить отраженя
Гм... текстура отражений 1280х1024 ?.. Такого я не говорил!
См. http://www.boolean.name/showthread.php?t=230 - тема археологически древняя, код такой же. Но суть некоторым образом ИМХО поясняет.
Товарищи! Не ленитесь копаццо по разделам! Там много хороших вещей можно найти!
...
Цитата:

решение под ногами....
Цитата:

шо за решение?
Тема про AShadows лежит как раз под ногами: ровно на шесть разделов ниже. ))

shybovycha 16.06.2007 16:40

Re: Как отрендерить в текстуру?
 
А как определить точку в текстуре, куда стрельнул хто-то, и прорисовать туда след от пули?


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

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