Blitz3D+ Command Reference

TextureCoords texture,coords

Parameters

texture - texture handle
coords - which vertex texture coordinate set the texture reads:
0: first coordinate set (default)
1: second coordinate set

Description

Selects which of the two vertex texture coordinate sets a texture uses.

Every vertex carries two independent u,v pairs (set with AddVertex and VertexTexCoords). By default every texture reads set 0; TextureCoords texture,1 switches that texture to set 1.

The classic use is lightmapping: the base texture tiles across the mesh using set 0, while the lightmap uses set 1 to cover the whole mesh exactly once - two different mappings on the same geometry at the same time.

See also: VertexTexCoords, TextureBlend, EntityTexture, BrushTexture.

Example

; TextureCoords Example
; ---------------------

Graphics3D 640,480,0,2
SetBuffer BackBuffer()

camera=CreateCamera()

; Build a single quad whose vertices carry TWO sets of UV coordinates
mesh=CreateMesh()
surf=CreateSurface(mesh)
v0=AddVertex(surf,-1.5,-1,0)
v1=AddVertex(surf,-1.5,1,0)
v2=AddVertex(surf,1.5,1,0)
v3=AddVertex(surf,1.5,-1,0)
AddTriangle surf,v0,v1,v2
AddTriangle surf,v0,v2,v3

; First UV set (coord_set 0): the texture mapped normally
VertexTexCoords surf,v0,0,1,0,0
VertexTexCoords surf,v1,0,0,0,0
VertexTexCoords surf,v2,1,0,0,0
VertexTexCoords surf,v3,1,1,0,0

; Second UV set (coord_set 1): flipped upside-down and tiled twice
VertexTexCoords surf,v0,0,0,0,1
VertexTexCoords surf,v1,0,2,0,1
VertexTexCoords surf,v2,2,2,0,1
VertexTexCoords surf,v3,2,0,0,1

tex=LoadTexture("media/b3dlogo.jpg")
EntityTexture mesh,tex

; Full-bright and double-sided, so the quad is easy to see from anywhere
EntityFX mesh,17
PositionEntity mesh,0,0,4

coords=0

While Not KeyDown(1)

    ; Space toggles which UV set the texture uses
    If KeyHit(57) Then coords=1-coords

    ; Tell the texture which vertex UV set to read
    TextureCoords tex,coords

    ; Arrow keys move the camera
    If KeyDown(200) Then MoveEntity camera,0,0,0.1
    If KeyDown(208) Then MoveEntity camera,0,0,-0.1
    If KeyDown(203) Then TurnEntity camera,0,1,0
    If KeyDown(205) Then TurnEntity camera,0,-1,0

    RenderWorld

    Text 0,0,"Space: toggle UV set   Arrows: camera   Esc: exit"
    Text 0,20,"TextureCoords tex,"+coords

    Flip

Wend

End

Index