Update loc of Vertex.
This commit is contained in:
parent
bb723036c0
commit
4ea0101cf6
4 changed files with 55 additions and 27 deletions
|
|
@ -64,6 +64,43 @@ namespace Map3DRendering.Common {
|
|||
|
||||
return new Texture(handle);
|
||||
}
|
||||
public static Texture LoadFromArray(string[] paths) {
|
||||
// Générer un identifiant de texture
|
||||
int handle = GL.GenTexture();
|
||||
|
||||
// Activer la texture
|
||||
GL.ActiveTexture(TextureUnit.Texture0);
|
||||
GL.BindTexture(TextureTarget.Texture2DArray, handle);
|
||||
|
||||
// Ici, nous supposons que toutes les images ont les mêmes dimensions et le même format
|
||||
// Charger la première image pour obtenir les dimensions
|
||||
ImageResult firstImage = ImageResult.FromStream(File.OpenRead(paths[0]), ColorComponents.RedGreenBlueAlpha);
|
||||
int width = firstImage.Width;
|
||||
int height = firstImage.Height;
|
||||
|
||||
// Initialiser la texture 2D array sans lui passer de données pour l'instant
|
||||
GL.TexImage3D(TextureTarget.Texture2DArray, 0, PixelInternalFormat.Rgba, width, height, paths.Length, 0, PixelFormat.Rgba, PixelType.UnsignedByte, IntPtr.Zero);
|
||||
|
||||
// Charger chaque texture dans l'array
|
||||
for (int i = 0; i < paths.Length; i++) {
|
||||
using (Stream stream = File.OpenRead(paths[i])) {
|
||||
ImageResult image = ImageResult.FromStream(stream, ColorComponents.RedGreenBlueAlpha);
|
||||
GL.TexSubImage3D(TextureTarget.Texture2DArray, 0, 0, 0, i, width, height, 1, PixelFormat.Rgba, PixelType.UnsignedByte, image.Data);
|
||||
}
|
||||
}
|
||||
|
||||
// Paramètres de texture
|
||||
GL.TexParameter(TextureTarget.Texture2DArray, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
|
||||
GL.TexParameter(TextureTarget.Texture2DArray, TextureParameterName.TextureMagFilter, (int)TextureMagFilter.Linear);
|
||||
GL.TexParameter(TextureTarget.Texture2DArray, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToEdge);
|
||||
GL.TexParameter(TextureTarget.Texture2DArray, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToEdge);
|
||||
|
||||
// Générer des mipmaps pour la texture array
|
||||
GL.GenerateMipmap(GenerateMipmapTarget.Texture2DArray);
|
||||
|
||||
return new Texture(handle);
|
||||
}
|
||||
|
||||
|
||||
public Texture(int glHandle) {
|
||||
Handle = glHandle;
|
||||
|
|
@ -77,6 +114,11 @@ namespace Map3DRendering.Common {
|
|||
GL.ActiveTexture(unit);
|
||||
GL.BindTexture(TextureTarget.Texture2D, Handle);
|
||||
}
|
||||
public void UseArray(TextureUnit unit) {
|
||||
GL.ActiveTexture(unit);
|
||||
GL.BindTexture(TextureTarget.Texture2DArray, Handle);
|
||||
}
|
||||
|
||||
|
||||
public void Assign(int shader, int i) {
|
||||
int location = GL.GetUniformLocation(shader, "textures[" + i.ToString() + "]");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue