/
vTech
/
FcApps
Обзор
Документация
Войти
/
vTech
/
FcApps
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
FcLibs/FcUI/src/FcUI_Texture/FcUI_Texture_GL.h
110 строк
4 KB
vTech
alpha_00
03 дек 2025, 17:45
03 дек 2025, 17:45
ab8382d
Код
Авторство
О чём код?
#ifndef _FCUI_TEXTURE_GL_H_ #define _FCUI_TEXTURE_GL_H_ #include "FcUI_Error.h" #include "FcUI_Setting.h" #include "FcUI_Window.h" typedef struct _FcUI_Texture_2D_GL_copy_t{ GLuint mWidth; GLuint mHeight; void* mData; }FcUI_Texture_2D_GL_copy_t; typedef struct _FcUI_Texture_2D_GL_t{ GLuint mWidth; GLuint mHeight; FcUI_Window_t *mWindow; FcGL_Texture_2D_t mTexture; FcUI_Texture_2D_GL_copy_t mData; } FcUI_Texture_2D_GL_t; FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL(FcUI_Texture_2D_GL_t* pTexture, FcUI_Window_t* pWindow, GLuint width, GLuint height); FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL_copy(FcUI_Texture_2D_GL_t* pTexture, FcUI_Texture_2D_GL_copy_t* pData); FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL_free(FcUI_Texture_2D_GL_t* pTexture); FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_queue(FcWindow_t* pWindow, void* pTexture); FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_copy_queue(FcWindow_t* pWindow, void* pTexture); FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_free_queue(FcWindow_t* pWindow, void* pTexture); FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL(FcUI_Texture_2D_GL_t* pTexture, FcUI_Window_t* pWindow, GLuint width, GLuint height){ FcUI_Error_t mError; FCUISAFECALL(mError, (pTexture && pWindow), FCUI_ERROR_PARAMETERS); pTexture->mWidth = width; pTexture->mHeight = height; pTexture->mWindow = pWindow; FCUISAFECALLF(mError, FcUI_Window_GraphicsQueue_push_GL(pWindow, FcUI_Texture_2D_GL_queue, pTexture)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL_copy(FcUI_Texture_2D_GL_t* pTexture, FcUI_Texture_2D_GL_copy_t* pData){ FcUI_Error_t mError; FCUISAFECALL(mError, (pTexture && pData), FCUI_ERROR_PARAMETERS); pTexture->mData = *pData; FCUISAFECALLF(mError, FcUI_Window_GraphicsQueue_push_GL(pTexture->mWindow, FcUI_Texture_2D_GL_copy_queue, pTexture)); gError: return mError; } FCUIDEF FcUI_Error_t FcUI_Texture_2D_GL_free(FcUI_Texture_2D_GL_t* pTexture){ FcUI_Error_t mError; FCUISAFECALL(mError, (pTexture), FCUI_ERROR_PARAMETERS); FCUISAFECALLF(mError, FcUI_Window_GraphicsQueue_push_GL(pTexture->mWindow, FcUI_Texture_2D_GL_free_queue, pTexture)); gError: return mError; } FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_queue(FcWindow_t* pWindow, void* pTexture){ FcUI_Texture_2D_GL_t* mTexture; FcGL_Texture_2D_Config_t mConfig; const FcPlatform_GL_t* mPlatform; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow && pTexture), FCUI_ERROR_PARAMETERS); mTexture = (FcUI_Texture_2D_GL_t*)pTexture; mConfig.mWidth = mTexture->mWidth; mConfig.mHeight = mTexture->mHeight; mConfig.mFilter = FcGL_Texture_Filter_LINEAR; mConfig.mFormat = FcGL_Texture_Format_RGBA; mConfig.mWrap = FcGL_Texture_WRAP_EDGE; mConfig.mData = NULL; mPlatform = FcWindow_getPlatform_GL(pWindow); FCUISAFECALLF(mError, FcGL_Texture_2D(mPlatform, &mTexture->mTexture, &mConfig)); // memset(mTexture, 0, sizeof(*mTexture)); gError: return mError; } FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_copy_queue(FcWindow_t* pWindow, void* pTexture){ const FcPlatform_GL_t* mPlatform; FcUI_Texture_2D_GL_t* mTexture; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow && pTexture), FCUI_ERROR_PARAMETERS); mTexture = (FcUI_Texture_2D_GL_t*)pTexture; mPlatform = FcWindow_getPlatform_GL(pWindow); FCUISAFECALLF(mError, FcGL_Texture_2D_copy(mPlatform, &mTexture->mTexture, mTexture->mData.mData, mTexture->mData.mWidth, mTexture->mData.mHeight)); gError: return mError; } FCUIDEF FcWindow_Error_t FcUI_Texture_2D_GL_free_queue(FcWindow_t* pWindow, void* pTexture){ FcUI_Texture_2D_GL_t* mTexture; const FcPlatform_GL_t* mPlatform; FcWindow_Error_t mError = FCWINDOW_ERROR_NOERROR; FCUISAFECALL(mError, (pWindow && pTexture), FCUI_ERROR_PARAMETERS); mTexture = (FcUI_Texture_2D_GL_t*)pTexture; mPlatform = FcWindow_getPlatform_GL(pWindow); FCUISAFECALLF(mError, FcGL_Texture_2D_free(mPlatform, &mTexture->mTexture)); //mTexture->mHeight = 0; //mTexture->mWidth = 0; //mTexture->mWindow = NULL; memset(&mTexture->mTexture, 0, sizeof(mTexture->mTexture)); gError: return mError; } #endif //_FCUI_TEXTURE_GL_H_