CreateTexture ( width,height[,flags][,frames] )

Параметры

width - ширина текстуры
height - высота текстуры

flags (не обязательно) - дополнительные флаги:
1: Color - цветная (по умолчанию)
2: Alpha - прозрачная
4: Masked - маскированная
8: Mipmapped - сглаживание на расстоянии
16: Clamp U -ограничить текстуру по координате U
32: Clamp V - ограничить текстуру по координате V
64: Spherical environment map - сферическая карта окружения
128: Cubic environment map - кубическая карта окружения
256: Store texture in vram - сохранять текстуру в видеопамяти
512: Force the use of high color textures - улучшенная обработка многоцветных текстур

frames (не обязательно) - сколько кадров текстура будет иметь. По умолчанию 1.

Описание

Создает текстуру и возвращает ее указатель.

Ширина и высота - размер текстуры. Заметьте, что фактический размер текстуры может отличаться от ширины и высоты, которую требуют различные типы видеоплат.

Дополнительный параметр флажков позволяет Вам применять определенные эффекты к текстуре. Флажки могут быть сложены, чтобы объединить два или больше эффекта, например 3 (1+2) = цветная прозрачная текстура.

Здесь еще некоторые детали использования флажков:

1: Color(цвет) - текстура в полном цвете (без изменений).

2: Alpha(прозрачность) - карта прозрачности. Если изображение будет содержать (будет использован флаг 2) альфа-карту, то это будет использоваться, чтобы сделать определенные области текстуры прозрачными. Иначе, цветовая карта будет использоваться как альфа-карта. В альфа-картах, темные области всегда имеют высокую прозрачность, светлые области имеют низкую прозрачность.

4: Masked(маскированная) - все области текстуры, имеющие цвет 0,0,0(черный), не будут отображаться.

8: Mipmapped - чем дальше от камеры, тем меньше детализация текстуры. Размывает текстуру на расстоянии.

16: Clamp U - Любая часть текстуры, которая выходит за координаты U 0-1, не будет отображаться. Предотвращает обертывание текстуры вокруг объекта.

32: Clamp V - Любая часть текстуры, которая выходит за координаты V 0-1, не будет отображаться. Предотвращает обертывание текстуры вокруг объекта.

64: Spherical environment map(сферическая карта) - форма отображения среды. Это работает так: берется единственное изображение, и затем накладывается на трехмерный объект таким способом, что изображение, кажется, отражено в этом объекте. Когда используется с текстурой, на которой есть световые эффекты, то можно получить такие объекты как, например, чайник с солнечными бликами.

128: Cubic environment map(кубическая карта) - форма отображения среды. Похоже на сферическую, но использует шесть изображений, где каждое представляет собой сторону воображаемого куба и дает изображение, которое совершенно точно отражает окружение объекта.

При создании кубической карты среды командой CreateTexture, размеры текстуры должны быть двойными. См. команду SetCubeFace.

Загружая кубические карты сред в Blitz с использованием LoadTexture, все шесть изображений, изображающие шесть сторон куба, должны содержаться в пределах одной текстуры, и расположены в горизонтальной полосе в следующем порядке - левое, переднее, правое, заднее, верхнее, нижнее. Изображения должны быть двойного размера.

Пожалуйста отметьте, что некоторые старые видеоплаты не поддерживают кубическое отображение. Чтобы узнавать это, используйте команду GfxDriverCaps3D.

256: Store texture in vram(текстура в vram). При некоторых обстоятельствах, это делает работу с текстурами намного быстрее, так как используется память видеокарты, которая работает быстрее. Можно использовать для динамических текстур - то есть используя CopyRect между двумя текстурами. При наложении с кубической картой в реальном времени, предпочтительно использовать этот флажок.

512: Force the use of high color textures - использование многоцветных текстур в графических режимах с меньшей глубиной цвета. Это полезно, когда Вы находитесь в 16-разрядном режиме, и желаете создать/загрузить текстуры с флагом alpha (прозрачность) - это должно дать лучшие результаты.

Как только Вы создали текстуру, используйте SetBuffer TextureBuffer, чтобы перейти к роботе с ней. Однако, чтобы отобразить 2D-графику на текстуре, обычно лучше загрузить готовое изображение и затем копировать его к texturebuffer. Чтобы отображать 3D-объекты на текстуре, Вам нужно будет скопировать backbuffer в texturebuffer.


Смотрите также : LoadTexture, LoadAnimTexture.

Пример

; Пример CreateTexture
; ---------------------

Graphics3D 640,480
SetBuffer BackBuffer()

camera=CreateCamera()

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

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

;Создаем текстуру размером 256x256
tex=CreateTexture( 256,256 )

; Set buffer - texture buffer
SetBuffer TextureBuffer( tex )

; Очищаем texture buffer с белым цветом
ClsColor 255,255,255
Cls

; Пишем текст на текстуре
font=LoadFont( "arial",24 )
SetFont font
Color 0,0,0
Text 0,0,"This texture"
Text 0,40,"was created using" : Color 0,0,255
Text 0,80,"CreateTexture()" : Color 0,0,0
Text 0,120,"and drawn to using" : Color 0,0,255
Text 0,160,"SetBuffer TextureBuffer()"

; Текстурируем куб
EntityTexture cube,tex

; Set buffer - backbuffer
SetBuffer BackBuffer()

While Not KeyDown( 1 )

pitch#=0
yaw#=0
roll#=0

If KeyDown( 208 )=True Then pitch#=-1
If KeyDown( 200 )=True Then pitch#=1
If KeyDown( 203 )=True Then yaw#=-1
If KeyDown( 205 )=True Then yaw#=1
If KeyDown( 45 )=True Then roll#=-1
If KeyDown( 44 )=True Then roll#=1

TurnEntity cube,pitch#,yaw#,roll#

RenderWorld
Flip

Wend

End

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в интернете