Engine Code
This commit is contained in:
30
engine/texture.py
Normal file
30
engine/texture.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from OpenGL.GL import *
|
||||
from PIL import Image
|
||||
import numpy as np
|
||||
|
||||
|
||||
class Texture:
|
||||
def __init__(self, path, type_name="texture_diffuse"):
|
||||
self.id = glGenTextures(1)
|
||||
self.type = type_name
|
||||
self.path = path
|
||||
image = Image.open(path)
|
||||
image = image.transpose(Image.FLIP_TOP_BOTTOM)
|
||||
img_data = np.array(list(image.getdata()), np.uint8)
|
||||
if image.mode == "RGB":
|
||||
img_format = GL_RGB
|
||||
elif image.mode == "RGBA":
|
||||
img_format = GL_RGBA
|
||||
else:
|
||||
raise ValueError(f"Unsupported image format: {image.mode}")
|
||||
glBindTexture(GL_TEXTURE_2D, self.id)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR)
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
|
||||
glTexImage2D(
|
||||
GL_TEXTURE_2D, 0, img_format, image.width, image.height, 0,
|
||||
img_format, GL_UNSIGNED_BYTE, img_data
|
||||
)
|
||||
glGenerateMipmap(GL_TEXTURE_2D)
|
||||
image.close()
|
||||
Reference in New Issue
Block a user