opengl.texture: Add simple tiling.

This commit is contained in:
Rod Kay
2024-02-03 21:38:58 +11:00
parent 2fdc670868
commit c7f58797f3
4 changed files with 75 additions and 53 deletions

View File

@@ -161,13 +161,15 @@ is
loop loop
the_Vertices (Index_t (i)) := (Site => Vector_3 (the_Sites (i) & 0.0), the_Vertices (Index_t (i)) := (Site => Vector_3 (the_Sites (i) & 0.0),
Normal => Normal, Normal => Normal,
Coords => Coords_and_Centroid.Coords (Index_t (i)), Coords => (Coords_and_Centroid.Coords (Index_t (i)).S * Self.Face.texture_Tiling,
Coords_and_Centroid.Coords (Index_t (i)).T * Self.Face.texture_Tiling),
Shine => default_Shine); Shine => default_Shine);
end loop; end loop;
the_Vertices (the_Vertices'Last) := (Site => Vector_3 (Coords_and_Centroid.Centroid & 0.0), the_Vertices (the_Vertices'Last) := (Site => Vector_3 (Coords_and_Centroid.Centroid & 0.0),
Normal => Normal, Normal => Normal,
Coords => (0.5, 0.5), Coords => (S => 0.5 * Self.Face.texture_Tiling,
T => 0.5 * Self.Face.texture_Tiling),
Shine => default_Shine); Shine => default_Shine);
upper_Face := new_Face (Vertices => the_Vertices); upper_Face := new_Face (Vertices => the_Vertices);

View File

@@ -17,6 +17,7 @@ is
Fades : texture_Set.fade_Levels (texture_Set.texture_Id) := [others => 0.0]; Fades : texture_Set.fade_Levels (texture_Set.texture_Id) := [others => 0.0];
Textures : openGL.asset_Names (1 .. Positive (texture_Set.texture_Id'Last)) := [others => null_Asset]; -- The textures to be applied to the hex. Textures : openGL.asset_Names (1 .. Positive (texture_Set.texture_Id'Last)) := [others => null_Asset]; -- The textures to be applied to the hex.
texture_Count : Natural := 0; texture_Count : Natural := 0;
texture_Tiling : openGL.Real := 1.0; -- The number of times the texture should be wrapped.
end record; end record;

View File

@@ -191,6 +191,7 @@ is
Vertices : in Geometry_2d.Sites; Vertices : in Geometry_2d.Sites;
Color : in openGL.Color := opengl.Palette.White; Color : in openGL.Color := opengl.Palette.White;
Texture : in openGL.asset_Name := openGL.null_Asset; Texture : in openGL.asset_Name := openGL.null_Asset;
texture_Tiling : in openGL.Real := 1.0;
user_Data : in any_user_Data_view := null) return gel.Sprite.view user_Data : in any_user_Data_view := null) return gel.Sprite.view
is is
use type Geometry_2d.Sites, use type Geometry_2d.Sites,
@@ -221,7 +222,8 @@ is
the_graphics_Model := openGL.Model.polygon.lit_textured.new_Polygon (openGL.Vector_2_array (Vertices), the_graphics_Model := openGL.Model.polygon.lit_textured.new_Polygon (openGL.Vector_2_array (Vertices),
Face => (Fades => [1 => 0.0, others => <>], Face => (Fades => [1 => 0.0, others => <>],
Textures => [1 => Texture, others => <>], Textures => [1 => Texture, others => <>],
texture_Count => 1)).all'Access; texture_Count => 1,
texture_Tiling => texture_Tiling)).all'Access;
end if; end if;
return gel.Sprite.Forge.new_Sprite (Name, return gel.Sprite.Forge.new_Sprite (Name,
@@ -248,6 +250,7 @@ is
Height : in math.Real; Height : in math.Real;
Color : in openGL.Color := opengl.Palette.White; Color : in openGL.Color := opengl.Palette.White;
Texture : in openGL.asset_Name := openGL.null_Asset; Texture : in openGL.asset_Name := openGL.null_Asset;
texture_Tiling : in openGL.Real := 1.0;
user_Data : in any_user_Data_view := null) return gel.Sprite.view user_Data : in any_user_Data_view := null) return gel.Sprite.view
is is
use Math; use Math;
@@ -260,7 +263,18 @@ is
[ half_Width, half_Height], [ half_Width, half_Height],
[-half_Width, half_Height]]; [-half_Width, half_Height]];
begin begin
return new_polygon_Sprite (in_World, Name, Site, Mass, Friction, Bounce, is_Tangible, the_Vertices, Color, Texture, user_Data); return new_polygon_Sprite (in_World,
Name,
Site,
Mass,
Friction,
Bounce,
is_Tangible,
the_Vertices,
Color,
Texture,
texture_Tiling,
user_Data);
end new_rectangle_Sprite; end new_rectangle_Sprite;

View File

@@ -77,6 +77,7 @@ is
Vertices : in Geometry_2d.Sites; Vertices : in Geometry_2d.Sites;
Color : in openGL.Color := opengl.Palette.White; Color : in openGL.Color := opengl.Palette.White;
Texture : in openGL.asset_Name := openGL.null_Asset; Texture : in openGL.asset_Name := openGL.null_Asset;
texture_Tiling : in openGL.Real := 1.0;
user_Data : in any_user_Data_view := null) return gel.Sprite.view; user_Data : in any_user_Data_view := null) return gel.Sprite.view;
function new_rectangle_Sprite (in_World : in gel.World.view; function new_rectangle_Sprite (in_World : in gel.World.view;
@@ -90,7 +91,11 @@ is
Height : in math.Real; Height : in math.Real;
Color : in openGL.Color := opengl.Palette.White; Color : in openGL.Color := opengl.Palette.White;
Texture : in openGL.asset_Name := openGL.null_Asset; Texture : in openGL.asset_Name := openGL.null_Asset;
texture_Tiling : in openGL.Real := 1.0;
user_Data : in any_user_Data_view := null) return gel.Sprite.view; user_Data : in any_user_Data_view := null) return gel.Sprite.view;
-- 3D -- 3D
-- --