|
3D-программирование Вопросы, касающиеся программирования 3D мира |
14.03.2010, 19:51
|
#1
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Не пишется текст на текстуре
И снова я.))) Пытался своими силами разобраться в чём прикол, но не смог, по этому надеюсь на помощь тут, вы меня столько раз уже выручали.) В общем пытаюсь на текстуре через буфер текстур написать надпись. Вот отрывок кода:
tex=LoadTexture("batt_menu_sub2.tga",2)
SetBuffer TextureBuffer(tex)
;Cls
Color 190,190,190
Rect 10,10,300,50
Color 0,0,0
font=LoadFont ("Arial",34)
SetFont font
Text 0,0,",kf ,kf ,kf"
Color 255,255,255
SetBuffer BackBuffer
EntityTexture batt_menu_sub,tex
так вот, прямоугольник рисуется, но ненормально, точнее у меня текстура всего-то 330 на 79 пикселей, однако прямоугольник не занимает и четверти текстуры, хотя должен занять всю. А вот текст кообще не выводится, какого бы размера шрифт я не ставил.( Из-за чего это может быть?
И ещё, можно лди как-то избавиться от моргания экрана при этом?
Заранее всем огромное спасибо.
|
(Offline)
|
|
14.03.2010, 20:42
|
#2
|
Дэвелопер
Регистрация: 17.01.2007
Сообщений: 1,552
Написано 351 полезных сообщений (для 774 пользователей)
|
Ответ: Не пишется текст на текстуре
при загрузке текстуры в блитц она автоматически масштабируется под размер кратный двум, то есть было у тебя разрешение 330 на 79, а стало 512 на 128.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
14.03.2010, 21:09
|
#3
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
А не подскажешь как тогда мне написать текст на текстуре? Очень надо, неохота создовать 50 разных текстур различающихся только надписью.
|
(Offline)
|
|
14.03.2010, 21:17
|
#4
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
Сейчас подогнал размеры самой текстуры под 256х64, теперь прямоугольник как положено рисуется, а теста всё равно нет, хотя я вижу что и шрифты меняются и тп, но на текстуру он не записывается.(
|
(Offline)
|
|
14.03.2010, 21:30
|
#5
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
понял в чём проблема.((( Текст не пишется на текстуру если она с альфа каналом загружена.( Если без альфы гружу то текст рисуется. Блин.((( Кто-нить знает как это обойти?
|
(Offline)
|
|
14.03.2010, 23:12
|
#6
|
Бывалый
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений (для 832 пользователей)
|
Ответ: Не пишется текст на текстуре
столкнулся с похожей проблемой еще несколько лет назад,
решения так и не нашел...
следующий исходник практически везде работает
нормально, но иногда пишет на текстуре только первое слово
и на этом все заканчивается
Function errtex()
dela=CreateTexture(256,256)
SetBuffer TextureBuffer(dela)
ClsColor 32,32,255:Cls
font222=LoadFont("Tahoma",78,1)
SetFont font222:Color 255,255,255
Text 45,40,"Error":Text 10,110,"texture"
SetBuffer BackBuffer() :ClsColor 0,0,0
FreeFont font222:SetFont font:Return dela
End Function
|
(Offline)
|
|
14.03.2010, 23:38
|
#7
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
Эммм... не совсем понял что возвращает эта функция и как она поможет мне писать текст на моей уже существующей текстуре? Если не сложно можешь подробнее описать её применение?
|
(Offline)
|
|
15.03.2010, 00:02
|
#8
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
Ладно, фиг с ним, буду исспользовать без альфы текстуру. ТОгда другая проблема. мне надо что бы на каждой новой кнопке в типе писался разный текст который берётся из массива. Но у меня получается что у всех одна и таже текстура на которой друг на друга наложен весь их текст.( Вот код:
For i=1 To 100
If items$(i,2)>0
sub_count=sub_count+1
sub_y#=sub_y#+0.04
e.submenu=New submenu
e\item_name$=items$(i,1)
e\item_step=sub_count
e\batt_menu_sub=CreateSprite(camera)
e\xscale#=0.1
e\yscale#=e\xscale#/4.35
;tex666=CreateImage(256,64)
e\tex=LoadTexture ("batt_menu_sub.jpg")
ScaleSprite e\batt_menu_sub,e\xscale#,e\yscale#
SpriteViewMode e\batt_menu_sub,2
;Color 90,90,90
;Text 15,15,",kf ,kf ,kf"
;Color 255,255,255
SetBuffer TextureBuffer(e\tex)
;Cls
;Color 150,150,150
;Rect 10,10,200,40
Color 210,210,210
font_item=LoadFont ("Arial",16)
SetFont font_item
Text 15,15,items$(i,3)
Color 255,255,255
SetBuffer BackBuffer
EntityTexture e\batt_menu_sub,e\tex
PositionEntity e\batt_menu_sub,-0.28,sub_y#,0.9
FreeTexture e\tex
EndIf
Next
Как сделать так что бы текстура разной была на каждой следующей кнопке, а не все надписи сливались на одно теекстуре?
|
(Offline)
|
|
15.03.2010, 07:50
|
#9
|
Бывалый
Регистрация: 10.06.2006
Сообщений: 808
Написано 354 полезных сообщений (для 832 пользователей)
|
Ответ: Не пишется текст на текстуре
теперь ты снова столкнулся с проблемой, которая постигла и меня...
по задумке автора блица текстура с одним и тем же именем не грузится 2 раза, дабы избежать повторов
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.03.2010, 08:44
|
#10
|
ПроЭктировщик
Регистрация: 03.05.2009
Адрес: г.Волгоград
Сообщений: 136
Написано 32 полезных сообщений (для 53 пользователей)
|
Ответ: Не пишется текст на текстуре
Ладно, фиг с ним, буду исспользовать без альфы текстуру.
|
А может ты когда текстом ресуешь (цвет текста темный) и от этого цвет не видем, так как альфа становится прозрачной как и текст.
|
(Offline)
|
|
15.03.2010, 09:47
|
#11
|
Нуждающийся
Регистрация: 19.01.2007
Сообщений: 75
Написано 3 полезных сообщений (для 3 пользователей)
|
Re: Не пишется текст на текстуре
Так, ну с проблемой не рисования разных текстур я разобрался.)
L.D.M.T. vbmenu_register("postmenu_141921", true);
Лови код, может пригодится.)
For i=1 To 100
If items$(i,2)>0
sub_count=sub_count+1
sub_y#=sub_y#+0.04
e.submenu=New submenu
e\item_name$=items$(i,1)
e\item_step=sub_count
e\batt_menu_sub=CreateSprite(camera)
e\xscale#=0.08
e\yscale#=e\xscale#/4.35
e\tex=CreateTexture(256,64)
img=LoadImage ("batt_menu_sub.jpg")
ScaleSprite e\batt_menu_sub,e\xscale#,e\yscale#
SpriteViewMode e\batt_menu_sub,2
SetBuffer TextureBuffer(e\tex)
Cls
DrawImage img,0,0
Color 210,210,210
font_item=LoadFont ("Arial",21,1)
SetFont font_item
Text 15,20,items$(i,3)
Text 200,20,items$(i,2)
FreeFont font_item
Color 255,255,255
SetBuffer BackBuffer
EntityTexture e\batt_menu_sub,e\tex
PositionEntity e\batt_menu_sub,-0.28,sub_y#,0.9
FreeTexture e\tex
EndIf
Next
Вот. ТОесть в кратце мы создаём пустую текстуру такого же размера как и та что пытались загрузить, а нашу текстуру грузим как имейдр и потом просто в буфер текстуры рисуем нужную текстуру из имейджа, потом поверх текст, запекаем и очищаем экран перед следующим проходом. ТОгда при каждом повторе и создании нового элемента типа у нас текстура будет с разным текстом.)
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:14.
|