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

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

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

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 25.08.2008, 03:46   #1
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
CreateTexture

Сегодня вдруг выяснил такую неприятную вещь: при создании текстуры напрямую в блитце возникает странный баг с флагами. Можно поставить 2 или 4, а толку ноль - черный цвет остается просто черным.
У меня есть только одна идея по этому поводу. Справка пишет, что для альфа текстур при загрузке по умолчанию используется альфа-канал изображения. И только если его нет используется стандартная схема - чем темнее, тем прозрачнее. Возможно поэтому при создании текстуры черный цвет не делается прозрачным.
Вопрос, собственно, такой: можно ли это как-то обойти или придется геморроиться с WritePixelFast?
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
IGR (25.12.2008)
Старый 25.08.2008, 03:54   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,743
Написано 5,461 полезных сообщений
(для 15,676 пользователей)
Ответ: CreateTexture

При помощи WritePixel[Fast] пиши не только цвет, но и альфу. (нужна видимая точка - 255, невидимая - 0) то есть типа такого ЕСЛИ пиксель чёрный или около того, ТОГДА пишем вместе с цветом ещё и альфу 0, ИНАЧЕ - 255
З.Ы. Там нада это в 16-ричную сис. сч. перевести но это не сложно, сам же пользовался.
З.З.Ы. Не юзай WritePixelFast и ReadPixelFast, они не на всех компах работают без глюков, лучше делай обычные WritePixel и ReadPixel.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

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

З.З.Ы. Не юзай WritePixelFast и ReadPixelFast, они не на всех компах работают без глюков, лучше делай обычные WritePixel и ReadPixel.
Не уверен, сколько юзал - всегда пахало. А производительность возрастает многократно. Буфер лочил?
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 25.08.2008, 16:27   #4
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: CreateTexture

Я провел эксперимент и скажу что разницы между WritePixelFast(ReadPixelFast) и WritePixel(ReadPixel) нету никакой, главное залочить картинку. При залоченой картинке скорости опеих пар команд одинаковые. Видимо всё отличие только в том что команды без приставки Fast могут и без залочения работать, но медленее. Но с LockBuffer их скорость одинакова.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
HolyDel (25.08.2008)
Старый 26.08.2008, 02:27   #5
MiXaeL
Бывалый
 
Аватар для MiXaeL
 
Регистрация: 22.08.2006
Сообщений: 700
Написано 146 полезных сообщений
(для 267 пользователей)
Ответ: CreateTexture

Кстати, подтверждаю, WritePixelFast без причин вылетает на моем компе. O_o
Причем довольно странно: в дебаг режиме на RenderWorld, без дебага после нажатия Esc. Иногда просто выходит из программы почти сразу после старта.даже без ошибки.
С WritePixel таких проблем не обнаружилось.
(Offline)
 
Ответить с цитированием
Старый 26.08.2008, 02:37   #6
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: CreateTexture

WritePixelFast - кака
не юзайте, вылетает.
И хрен поймешь от чего это зависит.
Бывает полгода работает, потом внезапно начинает глючить
__________________
(Offline)
 
Ответить с цитированием
Старый 26.08.2008, 15:42   #7
Tadeus
Троллота
 
Регистрация: 09.07.2007
Сообщений: 1,829
Написано 554 полезных сообщений
(для 1,772 пользователей)
Ответ: CreateTexture

Самое интересное - это то, что если использовать с ReadPixel/WritePixel совместно с LockBuffer/UnlockBuffer, то скорость на глаз, а может и не только, одинаковая с ReadPixelFast/WritePixelFast.
(Offline)
 
Ответить с цитированием
Старый 25.12.2008, 13:50   #8
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: CreateTexture

Ну и чо никто не постанул: http://forum.boolean.name/showpost.p...56&postcount=3
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 25.12.2008, 14:26   #9
L.D.M.T.
Бывалый
 
Аватар для L.D.M.T.
 
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений
(для 832 пользователей)
Ответ: CreateTexture

WritePixelFast вылетает только тогда, когда параметры выходят за пределы экрана или текстуры.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо L.D.M.T. за это полезное сообщение:
impersonalis (25.12.2008), Randomize (25.01.2009)
Старый 25.12.2008, 14:49   #10
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: CreateTexture

L.D.M.T. наконец-то хоть кто-то открыл нам истину!
в приведённом выше примере фиксится уменьшением верхней границы в циклах на одни пиксель

Это ведь ваще "фак мой моск": в половине семплов начало вывода в буфере считается за (0.0) и при этом до размеров, в то время как фактическое значение - (размер-1). Просто часть обработичков игнорируют такое надругательство.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?

Последний раз редактировалось impersonalis, 25.12.2008 в 14:57.
(Offline)
 
Ответить с цитированием
Старый 12.02.2009, 05:04   #11
DartWaider aka Yxo
AnyKey`щик
 
Регистрация: 12.02.2009
Сообщений: 6
Написано 2 полезных сообщений
(для 6 пользователей)
Ответ: CreateTexture

Если ещё актуально то выяснилось что можно копировать имэйдж в текстуру и с флагом маски, только пустой цвет(маскированый) записать как: А shl 24; где А от 0 до 128.

вот пример:

Graphics3D 800,600,16,1
SetBuffer BackBuffer()
SeedRnd MilliSecs()

Dim pix(64,64)

cube=CreateCube()

Global img=LoadImage("tex.bmp")
Global tex=CreateTexture(64,64,5)

;--------------------------
	SetBuffer ImageBuffer(img)
		LockBuffer()
		For i=0 To 63
			For j=0 To 63
				pix(j,i)=ReadPixel(j,i)
			Next
		Next
		UnlockBuffer()
	SetBuffer TextureBuffer(tex)
		LockBuffer()
		For i=0 To 63
			For j=0 To 63
				r=pix(j,i) Shr 16 And 255
				g=pix(j,i) Shr 8 And 255
				b=pix(j,i) And 255
				If  Not r=g=b Then	
					WritePixel j,i,0 Shl 24; + r Shl 16 + g Shl 8 + b
				Else 
					WritePixel j,i,pix(j,i)
				End If
			Next
		Next
		UnlockBuffer()
	SetBuffer BackBuffer()
;------------------------

EntityTexture cube,tex

lit=CreateLight()
cam=CreateCamera()
CameraClsColor cam,63,63,63
PositionEntity cam,0,0,-5

EntityFX cube,17

Repeat

	x=x+2:y=x-z:z=x-y
	RotateEntity cube,x,y,z
	
	UpdateWorld()
	RenderWorld()
	Flip 1
Until KeyHit(1)
End
Нарисовать в паинте какую-то фигню размером 64х64 на чёрном фоне думаю не проблема.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CreateTexture DMX 3D-программирование 10 28.07.2007 17:35
CreateTexture-LoadTerrain JVSh 3D-программирование 3 21.11.2006 23:09


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


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