aboutsummaryrefslogtreecommitdiff
path: root/source/30-game/Texture.cpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-11-25 17:28:07 -0800
committerrtk0c <[email protected]>2022-11-25 17:28:07 -0800
commitf3269a49c474ffe4d382c3d60826ad1cfbb7cdc4 (patch)
treebf7854505e9dae60c84e64764589c240339c3a41 /source/30-game/Texture.cpp
parenta0ddfdbcbc6336685362343518770f7bdefd10fe (diff)
Changeset: 93 Branch comment: [] Port font and UTF-8 string utilities from p6503master-ui-framework
Diffstat (limited to 'source/30-game/Texture.cpp')
-rw-r--r--source/30-game/Texture.cpp34
1 files changed, 21 insertions, 13 deletions
diff --git a/source/30-game/Texture.cpp b/source/30-game/Texture.cpp
index 6fa7c8a..e5c9705 100644
--- a/source/30-game/Texture.cpp
+++ b/source/30-game/Texture.cpp
@@ -14,7 +14,8 @@ Texture::~Texture() {
glDeleteTextures(1, &mHandle);
}
-static GLenum MapTextureFilteringToGL(Tags::TexFilter option) {
+namespace ProjectBrussel_UNITY_ID {
+GLint MapTextureFilteringToGL(Tags::TexFilter option) {
using namespace Tags;
switch (option) {
case TF_Linear: return GL_LINEAR;
@@ -22,8 +23,11 @@ static GLenum MapTextureFilteringToGL(Tags::TexFilter option) {
}
return 0;
}
+} // namespace ProjectBrussel_UNITY_ID
+
+Texture::ErrorCode Texture::InitFromFile(const char* filePath, const TextureProperties& props) {
+ using namespace ProjectBrussel_UNITY_ID;
-Texture::ErrorCode Texture::InitFromFile(const char* filePath) {
if (IsValid()) {
return EC_AlreadyInitialized;
}
@@ -40,21 +44,23 @@ Texture::ErrorCode Texture::InitFromFile(const char* filePath) {
glGenTextures(1, &mHandle);
glBindTexture(GL_TEXTURE_2D, mHandle);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MapTextureFilteringToGL(props.minifyingFilter));
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MapTextureFilteringToGL(props.magnifyingFilter));
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, result);
- mInfo.size = { width, height };
+ mProps.size = { width, height };
return EC_Success;
}
-Texture::ErrorCode Texture::InitFromImage(const Image& image) {
+Texture::ErrorCode Texture::InitFromImage(const Image& image, const TextureProperties& props) {
+ using namespace ProjectBrussel_UNITY_ID;
+
if (IsValid()) {
return EC_AlreadyInitialized;
}
- GLenum sourceFormat;
+ GLint sourceFormat;
switch (image.GetChannels()) {
case 1: sourceFormat = GL_RED; break;
case 2: sourceFormat = GL_RG; break;
@@ -69,11 +75,13 @@ Texture::ErrorCode Texture::InitFromImage(const Image& image) {
glGenTextures(1, &mHandle);
glBindTexture(GL_TEXTURE_2D, mHandle);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, MapTextureFilteringToGL(props.minifyingFilter));
+ glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, MapTextureFilteringToGL(props.magnifyingFilter));
glTexImage2D(GL_TEXTURE_2D, 0, sourceFormat, size.x, size.y, 0, sourceFormat, GL_UNSIGNED_BYTE, dataPtr);
- mInfo.size = size;
+ // Copy all [In] properties
+ mProps = props;
+ mProps.size = size;
return EC_Success;
}
@@ -192,7 +200,7 @@ Texture::ErrorCode Texture::InitAtlas(const AtlasInput& in, AtlasOutput* out) {
// 5. Generate atlas texture info
mHandle = atlasTexture;
- mInfo.size = { atlasWidth, atlasHeight };
+ mProps.size = { atlasWidth, atlasHeight };
// 6. Generate output information
if (out) {
@@ -216,8 +224,8 @@ Texture::ErrorCode Texture::InitAtlas(const AtlasInput& in, AtlasOutput* out) {
return EC_Success;
}
-const TextureInfo& Texture::GetInfo() const {
- return mInfo;
+const TextureProperties& Texture::GetInfo() const {
+ return mProps;
}
GLuint Texture::GetHandle() const {