migrat a OpenGL 3.3 Core Profile
This commit is contained in:
@@ -8,9 +8,9 @@
|
||||
#include <memory> // Para allocator, shared_ptr, make_shared, __shared_ptr_access
|
||||
#include <string> // Para operator+, char_traits, to_string, string
|
||||
|
||||
#include "asset.h" // Para Asset
|
||||
#include "external/jail_shader.h" // Para init, render
|
||||
#include "mouse.h" // Para updateCursorVisibility
|
||||
#include "asset.h" // Para Asset
|
||||
#include "mouse.h" // Para updateCursorVisibility
|
||||
#include "rendering/opengl/opengl_shader.h" // Para OpenGLShader
|
||||
#include "options.h" // Para VideoOptions, video, WindowOptions, window
|
||||
#include "param.h" // Para Param, param, ParamGame, ParamDebug
|
||||
#include "text.h" // Para Text, Text::COLOR, Text::STROKE
|
||||
@@ -57,7 +57,8 @@ Screen::Screen()
|
||||
|
||||
// Inicializa los shaders
|
||||
loadShaders();
|
||||
shader::init(window_, game_canvas_, shader_source_);
|
||||
shader_backend_ = std::make_unique<Rendering::OpenGLShader>();
|
||||
shader_backend_->init(window_, game_canvas_, vertex_shader_source_, fragment_shader_source_);
|
||||
}
|
||||
|
||||
// Destructor
|
||||
@@ -97,8 +98,8 @@ void Screen::renderPresent() {
|
||||
SDL_SetRenderTarget(renderer_, nullptr);
|
||||
clean();
|
||||
|
||||
if (Options::video.shaders) {
|
||||
shader::render();
|
||||
if (Options::video.shaders && shader_backend_) {
|
||||
shader_backend_->render();
|
||||
} else {
|
||||
SDL_RenderTexture(renderer_, game_canvas_, nullptr, nullptr);
|
||||
SDL_RenderPresent(renderer_);
|
||||
@@ -223,13 +224,20 @@ void Screen::renderInfo() {
|
||||
}
|
||||
}
|
||||
#endif
|
||||
// Carga el contenido del archivo GLSL
|
||||
// Carga el contenido de los archivos GLSL
|
||||
void Screen::loadShaders() {
|
||||
if (shader_source_.empty()) {
|
||||
const std::string GLSL_FILE = "crtpi.glsl";
|
||||
auto data = Asset::get()->loadData(GLSL_FILE);
|
||||
if (vertex_shader_source_.empty()) {
|
||||
const std::string VERTEX_FILE = "crtpi_vertex.glsl";
|
||||
auto data = Asset::get()->loadData(VERTEX_FILE);
|
||||
if (!data.empty()) {
|
||||
shader_source_ = std::string(data.begin(), data.end());
|
||||
vertex_shader_source_ = std::string(data.begin(), data.end());
|
||||
}
|
||||
}
|
||||
if (fragment_shader_source_.empty()) {
|
||||
const std::string FRAGMENT_FILE = "crtpi_fragment.glsl";
|
||||
auto data = Asset::get()->loadData(FRAGMENT_FILE);
|
||||
if (!data.empty()) {
|
||||
fragment_shader_source_ = std::string(data.begin(), data.end());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,7 +246,10 @@ void Screen::loadShaders() {
|
||||
void Screen::initShaders() {
|
||||
if (Options::video.shaders) {
|
||||
loadShaders();
|
||||
shader::init(window_, game_canvas_, shader_source_);
|
||||
if (!shader_backend_) {
|
||||
shader_backend_ = std::make_unique<Rendering::OpenGLShader>();
|
||||
}
|
||||
shader_backend_->init(window_, game_canvas_, vertex_shader_source_, fragment_shader_source_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,6 +321,10 @@ auto Screen::initSDLVideo() -> bool {
|
||||
SDL_LogWarn(SDL_LOG_CATEGORY_APPLICATION,
|
||||
"Warning: Failed to set OpenGL hint!");
|
||||
}
|
||||
// Configurar contexto OpenGL 3.3 Core Profile
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
|
||||
#endif
|
||||
|
||||
// Crear ventana
|
||||
|
||||
Reference in New Issue
Block a user