Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > FAQ

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 30.06.2007, 02:53   #1
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Спидометр

BACK=CreateImage(64,64)
SetBuffer ImageBuffer(BACK)
Color 255,255,255
Oval 0,0,64,64

Color 0,0,255
For i=0 To 359 Step 15
	Line 32,32,32+Cos(i)*30,32+Sin(i)*30
Next

Color 255,255,255
Oval 32-20,32-20,40,40

Color 255,0,0
Oval 32-2,32-2,4,4
SaveBuffer(ImageBuffer(BACK),"back.bmp")
FreeImage BACK
;=====================================
BACK=CreateImage(64,64)
SetBuffer ImageBuffer(BACK)
Rect 31,2,3,30
SaveBuffer(ImageBuffer(BACK),"back2.bmp")
FreeImage BACK
;=====================================
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
camera=CreateCamera()
light=CreateLight()

SP0=LoadSprite("back.bmp",4,camera)
SP1=LoadSprite("back2.bmp",4,SP0)

EntityOrder SP0,0
EntityFX SP0,1

EntityOrder SP1,-1
EntityFX SP1,1

PositionEntity SP0,-4,2.7,5
;=
cube=CreateCube()
PositionEntity cube,-3,2,6.5
SetBuffer BackBuffer()

While Not KeyHit(1)
	RotateSprite SP1,-MilliSecs()*0.01
	RenderWorld()
	Flip
Wend
End
Одна из возможных быстрых реализаций на спрайтах.
Внимание: в программе автогенерирующиеся рисунки (сбрасываются с папку tmp блитца или текущую папку) - это вызвано невозможнотью поставить для созданной( а не загруженной) текстуры флаг=4 (поставить можно - эффекта не будет).
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 30.06.2007, 13:35   #2
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Спидометр


это вызвано невозможнотью поставить для созданной( а не загруженной) текстуры флаг=4
Вообще-то это возможно. Просто при генерации такой текстуры (равно как и текстуры с флагом=2), нужно вручную задавать пикселам не только цвет, но и прозрачность:
Color= Alpha Shl 24 Or Red Shl 16 Or Green Shl 8 Or Blue Shl 0
WritePixel X,Y,Color
При загрузке текстуры из файла- Блиц делает это самостоятельно.

P.S. Может быть кто-нибудь осветит этот вопрос в ФАК-е? Ибо он в той или иной трактовке всплывает с завидной периодичностью.
(Offline)
 
Ответить с цитированием
Старый 30.06.2007, 20:31   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Спидометр


причом с бакбуффера все равно не считается значения альфаканала.
рисовать линии через writepexelfast - занятие неблагородное, и код одного только етого рисования был-бы намного больше, нежели код "спидометра".
зыж. не пробовал рисовать сразу в буффер тексы, но не думаю что что-то кардинально изменится, все равно придется прогонять каждый пиксель тексы и присваивать ему свое значение альфа-канала.
Такчто ИМХО правильно сделано.
(Offline)
 
Ответить с цитированием
Старый 30.06.2007, 21:06   #4
Diplomat
Дэвелопер
 
Регистрация: 07.09.2005
Сообщений: 1,519
Написано 66 полезных сообщений
(для 164 пользователей)
Re: Спидометр

Гым, речь шла о маск-канале. Значит ничто не мешает пргнать цикл по всем текселям и закрасить их прозрачным цветом (всего 6 строк). А уж поверху - аккурат сам Б-г велел рисовать непрозрачные линии любого фасона. Эдакий принцип фона и фореграунда. )
И зачем нам бекбуфер? Нам бекбуфер не надо. Многое, при желании, рисуется непосредственно в текстурный буфер.
(Offline)
 
Ответить с цитированием
Старый 30.06.2007, 23:14   #5
ЛысыЙ_Чук-Иванчук
Дэвелопер
 
Регистрация: 19.03.2006
Сообщений: 1,241
Написано 10 полезных сообщений
(для 17 пользователей)
Re: Спидометр

FastImage =))))
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 19:50   #6
avel
Бывалый
 
Аватар для avel
 
Регистрация: 12.10.2006
Сообщений: 737
Написано 131 полезных сообщений
(для 452 пользователей)
Re: Спидометр

2impersonalis прокомментируй свой код и вообще приведи его в порядок, а то некоторые новички-нубы, когда им даешь ссылку на твой пост пишут, что ничего не поняли. более опытные же юзеры и сами знают как такое сделать.
(Offline)
 
Ответить с цитированием
Старый 30.08.2007, 22:23   #7
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Re: Спидометр

;рисуем табло спидометра
BACK=CreateImage(64,64);создаём память для хранения картинки размером 64 на 64
;обратите внимание: размеры - степень двойки
SetBuffer ImageBuffer(BACK);устанавливаем в качестве текущего буфера для рисования
;буфер картинки
Color 255,255,255;устаниавливаем цвет рисования - белый
Oval 0,0,64,64;рисуем овал (вписываем его в нашу квадратную картинку)

Color 0,0,255;устаниавливаем цвет рисования - синий

For i=0 To 359 Step 15;проходим по окружности от 0 до 359 градусов
;с шагом 15
Line 32,32,32+Cos(i)*30,32+Sin(i)*30;рисуем линию из центра к краю овала
Next

Color 255,255,255;устаниавливаем цвет рисования - белый
Oval 32-20,32-20,40,40;рисуем в центре картинки небольшой овал (радиус - 20пкс)

Color 255,0,0;устаниавливаем цвет рисования - красный
Oval 32-2,32-2,4,4;рисуем в центре картинки маленький кружок (радиус - 4пкс)
SaveBuffer(ImageBuffer(BACK),"back.bmp");сохраняем нашу картинку как "back.bmp"
FreeImage BACK;удаляем картинку из памяти
;=====================================
;рисуем стрелку
BACK=CreateImage(64,64)
;создаём память для хранения картинки размером 64 на 64
;обратите внимание: размеры - степень двойки
SetBuffer ImageBuffer(BACK);устанавливаем в качестве текущего буфера для рисования
Rect 31,2,3,30;рисуем стрелку: прямоугольник из середины верхней стороны квадарата к центру
SaveBuffer(ImageBuffer(BACK),"back2.bmp");сохраняе м нашу картинку как "back2.bmp"
FreeImage BACK;удаляем картинку из памяти
;=====================================
Graphics3D 800,600,32,2;инициализация 3д-режима
SetBuffer BackBuffer();устанавливаем в кач-ве текущего - задний буфер
camera=CreateCamera();создаём камеру
light=CreateLight();создаём свет

SP0=LoadSprite("back.bmp",4,camera);загружаем спрайт - панель спидометра
;аттачим его к камере
SP1=LoadSprite("back2.bmp",4,SP0);загружаем спрайт - стрелку спидометра
;аттачим его к панели спидометра

EntityOrder SP0,0;устанавливаем порядок отрисовки - поверх всех
EntityFX SP0,1;убираем влияние освещения на спрайт

EntityOrder SP1,-1;устанавливаем порядок отрисовки - поверх всех
EntityFX SP1,1убираем влияние освещения на спрайт

PositionEntity SP0,-4,2.7,5;позиционируем панель спидометра (а, следовательно, и стрелку)
;=
;создаём и позиционируем кубик - чтобы не пребывать в пустоте
cube=CreateCube()
PositionEntity cube,-3,2,6.5


While Not KeyHit(1)
RotateSprite SP1,-MilliSecs()*0.01; в кач-ве показаний спидометра ставим кол-во мск с момента
;запуска ситемы *(-0.01)
RenderWorld();отрсиовка 3д-сцены
Flip;смена буферов
Wend
End
вот
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 31.08.2007, 01:47   #8
avel
Бывалый
 
Аватар для avel
 
Регистрация: 12.10.2006
Сообщений: 737
Написано 131 полезных сообщений
(для 452 пользователей)
Re: Спидометр

вот, совсем другое дело! теперь, думаю, даже тупой поймет! сделал в своем посте FAQ по B3D ссылку на данный пост. пускай все новички здесь смотрят.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Спидометр smaller 3D-программирование 20 29.06.2007 11:41
Спидометр LD 3D-программирование 9 21.06.2007 15:47


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com