|
texture - указатель существующей текстуры
mode - способ визуализации (рендеринга) текстуры с кубической картой окружения: 1: Зеркальный (specular)-по умолчанию 2: Рассеянный (diffuse) 3: Преломление (refraction) |
|
Устанавливает режим визуализации для текстуры с кубической картой окружения (cubemap texture).
Доступны следующие режимы: 1: Зеркальный (по умолчанию). Используйте, чтобы придать Вашему объекту больше блеска. 2: Рассеянный. Используйте, чтобы придать объекту более мягкие и реалистичные отражения. 3: Преломление. Придает объекту эффект линзы, в которой свет преломляется. Смотрите также : CreateTexture, LoadTexture, SetCubeFace. |
|
; Пример использования SetCubeMode
; ------------------- width=640 height=480 depth=0 mode=0 Graphics3D width,height,depth,mode SetBuffer BackBuffer() ; Если видеокарта не поддерживает кубическую карту окружения, то завершаем программу If GfxDriverCaps3D()<110 Then RuntimeError "Извините, Ваша видеокарта никуда не годится!" cam=CreateCamera() PositionEntity cam,0,10,-10 ; Создаём отдельную камеру для того, чтобы обновлять кубическую карту - это позволит нам управлять главной камерой и камерой текстуры. cube_cam=CreateCamera() HideEntity cube_cam light=CreateLight() RotateEntity light,90,0,0 ; Создаем объект, на котором испытаем нашу текстуру-классический чайник teapot=LoadMesh("media/teapot.x") ScaleEntity teapot,3,3,3 PositionEntity teapot,0,10,0 ; Создаем остальные объекты ; земля ground=CreatePlane() EntityColor ground,168,133,55 ground_tex=LoadTexture("media/sand.bmp") ScaleTexture ground_tex,10,10 EntityTexture ground,ground_tex ; небо sky=CreateSphere(24) ScaleEntity sky,500,500,500 FlipMesh sky EntityFX sky,1 sky_tex=LoadTexture("media/sky.bmp") EntityTexture sky,sky_tex ; кактус cactus=LoadMesh("media/cactus2.x") FitMesh cactus,-5,0,-5,2,6,.5 ; верблюд camel=LoadMesh("media/camel.x") FitMesh camel,5,0,-5,6,5,4 ; Создаем НЛО-динамический объект, который будет отражаться в нашей текстуре ufo_piv=CreatePivot() PositionEntity ufo_piv,0,15,0 ufo=LoadMesh("media/green_ufo.x",ufo_piv) PositionEntity ufo,0,0,10 ; Создаем текстуру с параметрами цвет+кубическая карта+сохранять в видеопамяти tex=CreateTexture(256,256,1+128+256) ; Накладываем текстуру на чайник EntityTexture teapot,tex ; Переменная, в которой будем хранить режим визуализации текстуры cube_mode=1 While Not KeyDown(1) ; Управление камерой ; обзор мышкой mxs#=mxs#+(MouseXSpeed()/5.0) mys#=mys#+(MouseYSpeed()/5.0) RotateEntity cam,mys#,-mxs#,0 MoveMouse width/2,height/2 ; двигаем камеру вперед/назад/влево/вправо курсорными клавишами If KeyDown(200)=True Then MoveEntity cam,0,0,.2 ; камеру вперед If KeyDown(208)=True Then MoveEntity cam,0,0,-.2 ; камеру назад If KeyDown(205)=True Then MoveEntity cam,.2,0,0 ; камеру влево If KeyDown(203)=True Then MoveEntity cam,-.2,0,0 ; камеру вправо ; Клавишей M меняем режим визуализации If KeyHit(50) cube_mode=cube_mode+1 If cube_mode=4 Then cube_mode=1 SetCubeMode tex,cube_mode EndIf ; поворачиваем точку, к которой привязан НЛО, заставляя и его поворачиваться вокруг чайника TurnEntity ufo_piv,0,2,0 ; Скроем главную камеру перед обновлением кубической карты текстуры HideEntity cam ; Обновляем карту UpdateCubemap(tex,cube_cam,teapot) ; Снова задействуем главную камеру ShowEntity cam RenderWorld Text 0,0,"Перемещайте мышь для обзора " Text 0,20,"Используйте курсорные клавиши для перемещения камеры" Text 0,40,"Клавиша M для выбора режима" Text 0,60,"SetCubeMode tex,"+cube_mode Flip Wend Function UpdateCubemap(tex,camera,entity) tex_sz=TextureWidth(tex) ; Используем камеру, которую мы прежде создали для обновления текстуры ShowEntity camera ; Скроем объект, на который будет накладываться текстура HideEntity entity ; Раасположим камеру в координатах объекта PositionEntity camera,EntityX#(entity),EntityY#(entity),EntityZ#(entity) CameraClsMode camera,False,True ; Установим поле зрения камеры таким же, как и размеры текстуры-так мы сможем все, чт видит камера, вместить в текстуру CameraViewport camera,0,0,tex_sz,tex_sz ; Обновляем кубическую карту ; вид слева SetCubeFace tex,0 RotateEntity camera,0,90,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; вид спереди SetCubeFace tex,1 RotateEntity camera,0,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; вид справа SetCubeFace tex,2 RotateEntity camera,0,-90,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; вид сзади SetCubeFace tex,3 RotateEntity camera,0,180,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; вид сверху SetCubeFace tex,4 RotateEntity camera,-90,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; вид снизу SetCubeFace tex,5 RotateEntity camera,90,0,0 RenderWorld CopyRect 0,0,tex_sz,tex_sz,0,0,BackBuffer(),TextureBuffer(tex) ; Снова показываем скрытый объект ShowEntity entity ; Скрываем дополнительную камеру HideEntity camera End Function |