mirror of
https://github.com/luanti-org/luanti.git
synced 2025-10-14 09:05:19 +02:00
Support OpenGL 3 (#13321)
This commit is contained in:
@@ -261,7 +261,7 @@ public:
|
||||
worldViewProj *= worldView;
|
||||
m_world_view_proj.set(*reinterpret_cast<float(*)[16]>(worldViewProj.pointer()), services);
|
||||
|
||||
if (driver->getDriverType() == video::EDT_OGLES2) {
|
||||
if (driver->getDriverType() == video::EDT_OGLES2 || driver->getDriverType() == video::EDT_OPENGL3) {
|
||||
core::matrix4 texture = driver->getTransform(video::ETS_TEXTURE_0);
|
||||
m_world_view.set(*reinterpret_cast<float(*)[16]>(worldView.pointer()), services);
|
||||
m_texture.set(*reinterpret_cast<float(*)[16]>(texture.pointer()), services);
|
||||
@@ -594,17 +594,19 @@ ShaderInfo ShaderSource::generateShader(const std::string &name,
|
||||
video::IGPUProgrammingServices *gpu = driver->getGPUProgrammingServices();
|
||||
|
||||
// Create shaders header
|
||||
bool use_gles = driver->getDriverType() == video::EDT_OGLES2;
|
||||
bool fully_programmable = driver->getDriverType() == video::EDT_OGLES2 || driver->getDriverType() == video::EDT_OPENGL3;
|
||||
std::stringstream shaders_header;
|
||||
shaders_header
|
||||
<< std::noboolalpha
|
||||
<< std::showpoint // for GLSL ES
|
||||
;
|
||||
std::string vertex_header, fragment_header, geometry_header;
|
||||
if (use_gles) {
|
||||
shaders_header << R"(
|
||||
#version 100
|
||||
)";
|
||||
if (fully_programmable) {
|
||||
if (driver->getDriverType() == video::EDT_OPENGL3) {
|
||||
shaders_header << "#version 150\n";
|
||||
} else {
|
||||
shaders_header << "#version 100\n";
|
||||
}
|
||||
vertex_header = R"(
|
||||
precision mediump float;
|
||||
|
||||
@@ -658,7 +660,7 @@ ShaderInfo ShaderSource::generateShader(const std::string &name,
|
||||
abort();
|
||||
}
|
||||
|
||||
bool use_discard = use_gles;
|
||||
bool use_discard = fully_programmable;
|
||||
// For renderers that should use discard instead of GL_ALPHA_TEST
|
||||
const char *renderer = reinterpret_cast<const char*>(GL.GetString(GL.RENDERER));
|
||||
if (strstr(renderer, "GC7000"))
|
||||
|
Reference in New Issue
Block a user