Показать сообщение отдельно
Старый 22.09.2014, 20:23   #2
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Как наложить текстуру только на одну грань куба?

Когда куб создан через xCreateCube то никак.
Надо создавать эту грань отдельно.

Вот пример функции где создаётся куб, на каждую сторону которого кладётся отдельная текстура.

Function mLoadSkyBox%(Dir$,Typ$="jpg")
	Local Mesh%=xCreateMesh()
	Local Brush%,Texture%,Surf%,v0%,v1%,v2%,v3%
	
	; Left
	If FileType(Dir+"\"+"left."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"left."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf,-1, 1,-1,0,0)
		v1=xAddVertex(Surf,-1, 1, 1,1,0)
		v2=xAddVertex(Surf,-1,-1,-1,0,1)
		v3=xAddVertex(Surf,-1,-1, 1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	; Front
	If FileType(Dir+"\"+"front."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"front."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf,-1, 1,1,0,0)
		v1=xAddVertex(Surf, 1, 1,1,1,0)
		v2=xAddVertex(Surf,-1,-1,1,0,1)
		v3=xAddVertex(Surf, 1,-1,1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	; Right
	If FileType(Dir+"\"+"right."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"right."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf,1, 1, 1,0,0)
		v1=xAddVertex(Surf,1, 1,-1,1,0)
		v2=xAddVertex(Surf,1,-1, 1,0,1)
		v3=xAddVertex(Surf,1,-1,-1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	; Back
	If FileType(Dir+"\"+"back."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"back."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf, 1, 1,-1,0,0)
		v1=xAddVertex(Surf,-1, 1,-1,1,0)
		v2=xAddVertex(Surf, 1,-1,-1,0,1)
		v3=xAddVertex(Surf,-1,-1,-1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	; Bottom
	If FileType(Dir+"\"+"bottom."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"bottom."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf,-1,-1, 1,0,0)
		v1=xAddVertex(Surf, 1,-1, 1,1,0)
		v2=xAddVertex(Surf,-1,-1,-1,0,1)
		v3=xAddVertex(Surf, 1,-1,-1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	; Top
	If FileType(Dir+"\"+"top."+Typ)<>0
		Texture=xLoadTexture(Dir+"\"+"top."+Typ,49)
		Brush=xCreateBrush()
		xBrushTexture Brush,Texture
		Surf=xCreateSurface(Mesh,Brush)
		v0=xAddVertex(Surf,-1, 1, 1,0,0)
		v1=xAddVertex(Surf,-1, 1,-1,1,0)
		v2=xAddVertex(Surf, 1, 1, 1,0,1)
		v3=xAddVertex(Surf, 1, 1,-1,1,1)
		xAddTriangle Surf,v2,v1,v0
		xAddTriangle Surf,v1,v2,v3
	EndIf
	
	xEntityFX Mesh,1+8
	xFlipMesh Mesh
	xUpdateNormals Mesh
	
	Return Mesh
End Function
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

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

(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Izunad (23.09.2014), KCEPOKC (25.09.2014)