Added GL_ARB_debug_output and GL_EXT_debug_marker

This commit is contained in:
korenkonder
2026-05-25 03:00:26 +03:00
parent 97ef131935
commit aedc137865
18 changed files with 131 additions and 64 deletions
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+56 -3
View File
@@ -1,13 +1,15 @@
/*
OpenGL loader generated by glad 0.1.36 on Wed Apr 23 10:45:44 2025.
OpenGL loader generated by glad 0.1.36 on Mon May 25 02:55:23 2026.
Language/Generator: C/C++
Specification: gl
APIs: gl=4.6
Profile: core
Extensions:
GL_ARB_debug_output,
GL_ARB_texture_compression_bptc,
GL_EXT_debug_marker,
GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc,
GL_EXT_texture_filter_anisotropic,
@@ -21,9 +23,9 @@
Reproducible: False
Commandline:
--profile="core" --api="gl=4.6" --generator="c" --spec="gl" --no-loader --extensions="GL_ARB_texture_compression_bptc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
--profile="core" --api="gl=4.6" --generator="c" --spec="gl" --no-loader --extensions="GL_ARB_debug_output,GL_ARB_texture_compression_bptc,GL_EXT_debug_marker,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
Online:
https://glad.dav1d.de/#profile=core&language=c&specification=gl&api=gl%3D4.6&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
https://glad.dav1d.de/#profile=core&language=c&specification=gl&api=gl%3D4.6&extensions=GL_ARB_debug_output&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_debug_marker&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
*/
@@ -3690,6 +3692,28 @@ typedef void (APIENTRYP PFNGLPOLYGONOFFSETCLAMPPROC)(GLfloat factor, GLfloat uni
GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp;
#define glPolygonOffsetClamp glad_glPolygonOffsetClamp
#endif
#define GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB 0x8242
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_ARB 0x8243
#define GL_DEBUG_CALLBACK_FUNCTION_ARB 0x8244
#define GL_DEBUG_CALLBACK_USER_PARAM_ARB 0x8245
#define GL_DEBUG_SOURCE_API_ARB 0x8246
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_ARB 0x8247
#define GL_DEBUG_SOURCE_SHADER_COMPILER_ARB 0x8248
#define GL_DEBUG_SOURCE_THIRD_PARTY_ARB 0x8249
#define GL_DEBUG_SOURCE_APPLICATION_ARB 0x824A
#define GL_DEBUG_SOURCE_OTHER_ARB 0x824B
#define GL_DEBUG_TYPE_ERROR_ARB 0x824C
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_ARB 0x824D
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_ARB 0x824E
#define GL_DEBUG_TYPE_PORTABILITY_ARB 0x824F
#define GL_DEBUG_TYPE_PERFORMANCE_ARB 0x8250
#define GL_DEBUG_TYPE_OTHER_ARB 0x8251
#define GL_MAX_DEBUG_MESSAGE_LENGTH_ARB 0x9143
#define GL_MAX_DEBUG_LOGGED_MESSAGES_ARB 0x9144
#define GL_DEBUG_LOGGED_MESSAGES_ARB 0x9145
#define GL_DEBUG_SEVERITY_HIGH_ARB 0x9146
#define GL_DEBUG_SEVERITY_MEDIUM_ARB 0x9147
#define GL_DEBUG_SEVERITY_LOW_ARB 0x9148
#define GL_COMPRESSED_RGBA_BPTC_UNORM_ARB 0x8E8C
#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_ARB 0x8E8D
#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_ARB 0x8E8E
@@ -3704,10 +3728,39 @@ GLAPI PFNGLPOLYGONOFFSETCLAMPPROC glad_glPolygonOffsetClamp;
#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
#define GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT 0x84FF
#ifndef GL_ARB_debug_output
#define GL_ARB_debug_output 1
GLAPI int GLAD_GL_ARB_debug_output;
typedef void (APIENTRYP PFNGLDEBUGMESSAGECONTROLARBPROC)(GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled);
GLAPI PFNGLDEBUGMESSAGECONTROLARBPROC glad_glDebugMessageControlARB;
#define glDebugMessageControlARB glad_glDebugMessageControlARB
typedef void (APIENTRYP PFNGLDEBUGMESSAGEINSERTARBPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf);
GLAPI PFNGLDEBUGMESSAGEINSERTARBPROC glad_glDebugMessageInsertARB;
#define glDebugMessageInsertARB glad_glDebugMessageInsertARB
typedef void (APIENTRYP PFNGLDEBUGMESSAGECALLBACKARBPROC)(GLDEBUGPROCARB callback, const void *userParam);
GLAPI PFNGLDEBUGMESSAGECALLBACKARBPROC glad_glDebugMessageCallbackARB;
#define glDebugMessageCallbackARB glad_glDebugMessageCallbackARB
typedef GLuint (APIENTRYP PFNGLGETDEBUGMESSAGELOGARBPROC)(GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog);
GLAPI PFNGLGETDEBUGMESSAGELOGARBPROC glad_glGetDebugMessageLogARB;
#define glGetDebugMessageLogARB glad_glGetDebugMessageLogARB
#endif
#ifndef GL_ARB_texture_compression_bptc
#define GL_ARB_texture_compression_bptc 1
GLAPI int GLAD_GL_ARB_texture_compression_bptc;
#endif
#ifndef GL_EXT_debug_marker
#define GL_EXT_debug_marker 1
GLAPI int GLAD_GL_EXT_debug_marker;
typedef void (APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC)(GLsizei length, const GLchar *marker);
GLAPI PFNGLINSERTEVENTMARKEREXTPROC glad_glInsertEventMarkerEXT;
#define glInsertEventMarkerEXT glad_glInsertEventMarkerEXT
typedef void (APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC)(GLsizei length, const GLchar *marker);
GLAPI PFNGLPUSHGROUPMARKEREXTPROC glad_glPushGroupMarkerEXT;
#define glPushGroupMarkerEXT glad_glPushGroupMarkerEXT
typedef void (APIENTRYP PFNGLPOPGROUPMARKEREXTPROC)(void);
GLAPI PFNGLPOPGROUPMARKEREXTPROC glad_glPopGroupMarkerEXT;
#define glPopGroupMarkerEXT glad_glPopGroupMarkerEXT
#endif
#ifndef GL_EXT_texture_compression_rgtc
#define GL_EXT_texture_compression_rgtc 1
GLAPI int GLAD_GL_EXT_texture_compression_rgtc;
+5 -3
View File
@@ -1,13 +1,15 @@
/*
WGL loader generated by glad 0.1.36 on Wed Apr 23 10:45:44 2025.
WGL loader generated by glad 0.1.36 on Mon May 25 02:55:23 2026.
Language/Generator: C/C++
Specification: wgl
APIs: wgl=1.0
Profile: -
Extensions:
GL_ARB_debug_output,
GL_ARB_texture_compression_bptc,
GL_EXT_debug_marker,
GL_EXT_texture_compression_rgtc,
GL_EXT_texture_compression_s3tc,
GL_EXT_texture_filter_anisotropic,
@@ -21,9 +23,9 @@
Reproducible: False
Commandline:
--api="wgl=1.0" --generator="c" --spec="wgl" --no-loader --extensions="GL_ARB_texture_compression_bptc,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
--api="wgl=1.0" --generator="c" --spec="wgl" --no-loader --extensions="GL_ARB_debug_output,GL_ARB_texture_compression_bptc,GL_EXT_debug_marker,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc,GL_EXT_texture_filter_anisotropic,WGL_ARB_extensions_string,WGL_EXT_extensions_string,WGL_NV_DX_interop,WGL_NV_DX_interop2"
Online:
https://glad.dav1d.de/#language=c&specification=wgl&api=wgl%3D1.0&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
https://glad.dav1d.de/#language=c&specification=wgl&api=wgl%3D1.0&extensions=GL_ARB_debug_output&extensions=GL_ARB_texture_compression_bptc&extensions=GL_EXT_debug_marker&extensions=GL_EXT_texture_compression_rgtc&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic&extensions=WGL_ARB_extensions_string&extensions=WGL_EXT_extensions_string&extensions=WGL_NV_DX_interop&extensions=WGL_NV_DX_interop2
*/
+14 -8
View File
@@ -720,6 +720,8 @@ inline void gl_rend_state::active_texture(int32_t index) {
inline void gl_rend_state::begin_event(const char* message, int32_t length) {
if (GLAD_GL_VERSION_4_3)
glPushDebugGroup(GL_DEBUG_SOURCE_APPLICATION, 0, (GLsizei)length, message);
else if (GLAD_GL_EXT_debug_marker)
glPushGroupMarkerEXT((GLsizei)length, message);
}
inline void gl_rend_state::begin_query(GLenum target, GLuint id) {
@@ -1122,6 +1124,8 @@ inline void gl_rend_state::enable_stencil_test() {
inline void gl_rend_state::end_event() {
if (GLAD_GL_VERSION_4_3)
glPopDebugGroup();
else if (GLAD_GL_EXT_debug_marker)
glPopGroupMarkerEXT();
}
inline void gl_rend_state::end_query(GLenum target) {
@@ -1217,14 +1221,16 @@ void gl_rend_state::get() {
glGetInteger64i_v(GL_UNIFORM_BUFFER_SIZE, i, (GLint64*)&uniform_buffer_sizes[i]);
}
shader_storage_buffer_start_index = 14;
shader_storage_buffer_end_index = -1;
if (GLAD_GL_VERSION_4_3) {
shader_storage_buffer_start_index = 14;
shader_storage_buffer_end_index = -1;
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
for (GLuint i = 0; i < 14; i++) {
glGetIntegeri_v(GL_SHADER_STORAGE_BUFFER_BINDING, i, (GLint*)&shader_storage_buffer_bindings[i]);
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_START, i, (GLint64*)&shader_storage_buffer_offsets[i]);
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_SIZE, i, (GLint64*)&shader_storage_buffer_sizes[i]);
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
for (GLuint i = 0; i < 14; i++) {
glGetIntegeri_v(GL_SHADER_STORAGE_BUFFER_BINDING, i, (GLint*)&shader_storage_buffer_bindings[i]);
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_START, i, (GLint64*)&shader_storage_buffer_offsets[i]);
glGetInteger64i_v(GL_SHADER_STORAGE_BUFFER_SIZE, i, (GLint64*)&shader_storage_buffer_sizes[i]);
}
}
glGetBooleanv(GL_COLOR_WRITEMASK, color_mask);
@@ -1869,7 +1875,7 @@ inline void gl_rend_state::update_uniform_buffer() {
}
inline void gl_rend_state::update_shader_storage_buffer() {
if (update_flags & GL_REND_STATE_UPDATE_SHADER_STORAGE_BUFFER) {
if (GLAD_GL_VERSION_4_3 && (update_flags & GL_REND_STATE_UPDATE_SHADER_STORAGE_BUFFER)) {
for (int32_t index = shader_storage_buffer_start_index;
index <= shader_storage_buffer_end_index; index++) {
if (curr_shader_storage_buffer_bindings[index] == shader_storage_buffer_bindings[index]
+2 -1
View File
@@ -109,7 +109,8 @@ void gl_state_struct::get() {
glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, (GLint*)&element_array_buffer_binding);
glGetIntegerv(GL_UNIFORM_BUFFER_BINDING, (GLint*)&uniform_buffer_binding);
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
if (GLAD_GL_VERSION_4_3)
glGetIntegerv(GL_SHADER_STORAGE_BUFFER_BINDING, (GLint*)&shader_storage_buffer_binding);
}
void* gl_state_struct::map_array_buffer(GLuint buffer) {
+6 -6
View File
@@ -2772,18 +2772,18 @@ namespace mdl {
return false;
std::vector<GLuint>* textures = get_objset_gen_textures_vec(obj_info.set_id);
VertexBuffer* obj_vert_buffer = get_object_vertex_buffer(obj_info);
IndexBuffer* ObjIB = get_object_index_buffer(obj_info);
VertexBuffer* vbhn_array = get_object_vertex_buffer(obj_info);
IndexBuffer* ibhn_array = get_object_index_buffer(obj_info);
::obj* obj_morph = 0;
VertexBuffer* obj_morph_vert_buffer = 0;
VertexBuffer* morph_vbhn_array = 0;
if (morph.object.set_id != -1) {
obj_morph = get_object_header(morph.object);
obj_morph_vert_buffer = get_object_vertex_buffer(morph.object);
morph_vbhn_array = get_object_vertex_buffer(morph.object);
}
return entry_obj(obj, mat, obj_vert_buffer, ObjIB,
textures, blend_color, bone_mat, obj_morph, obj_morph_vert_buffer,
return entry_obj(obj, mat, vbhn_array, ibhn_array,
textures, blend_color, bone_mat, obj_morph, morph_vbhn_array,
instances_count, instances_mat, func, func_data, enable_bone_mat);
}
+1 -8
View File
@@ -1382,13 +1382,6 @@ bool create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh) {
return true;
}
#if SHARED_OBJECT_BUFFER
// Added
inline void create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh, GLuint in_ib) {
//ibhn.create(in_ib, size);
}
#endif
// 0x140458280
bool create_mesh_vertex_buffer(VertexBuffer& vbhn, obj_mesh& mesh, GL::BufferUsage usage) {
if (!mesh.num_vertex || !mesh.vertex_array)
@@ -1923,7 +1916,7 @@ inline int32_t get_mesh_index_modern(uint32_t hash, const char* mesh_name) {
return -1;
}
// 0x140459E10
// 0x140459E10
inline VertexBuffer* get_mesh_vertex_buffer(object_info obj_id, const char* mesh_name) {
int32_t mesh_index = get_mesh_index(obj_id, mesh_name);
if (mesh_index == -1)
-3
View File
@@ -91,9 +91,6 @@ extern void objset_info_storage_free();
extern bool check_objset_ready(uint32_t objset_index);
extern bool create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh);
#if SHARED_OBJECT_BUFFER
extern void create_mesh_index_buffer(IndexBuffer& ibhn, obj_mesh& mesh, GLuint in_ib); // Added
#endif
extern bool create_mesh_vertex_buffer(VertexBuffer& vbhn,
obj_mesh& mesh, GL::BufferUsage usage = GL::BUFFER_USAGE_STATIC);
#if SHARED_OBJECT_BUFFER
+6 -6
View File
@@ -189,14 +189,14 @@ GLenum VertexBuffer::get_target() const {
}
// 0x1404616F0
GLuint create_index_buffer(uint32_t size, const void* data) {
GLuint create_index_buffer(uint32_t size, const void* buf) {
GLuint ib = 0;
glGenBuffers(1, &ib);
gl_state.bind_element_array_buffer(ib);
if (GLAD_GL_VERSION_4_4)
glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, size, data, 0);
glBufferStorage(GL_ELEMENT_ARRAY_BUFFER, size, buf, 0);
else
glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, data, GL_STATIC_DRAW);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, size, buf, GL_STATIC_DRAW);
gl_state.bind_element_array_buffer(0);
if (glGetError()) {
@@ -233,17 +233,17 @@ void free_index_buffer(GLuint ib) {
}
// 0x1404617B0
GLuint create_vertex_buffer(uint32_t size, const void* data, GL::BufferUsage usage) {
GLuint create_vertex_buffer(uint32_t size, const void* buf, GL::BufferUsage usage) {
GLuint vb = 0;
glGenBuffers(1, &vb);
gl_state.bind_array_buffer(vb);
if (GLAD_GL_VERSION_4_4 && usage != GL::BUFFER_USAGE_STREAM) {
GLbitfield flags = usage == GL::BUFFER_USAGE_DYNAMIC
? GL_DYNAMIC_STORAGE_BIT | GL_MAP_WRITE_BIT : 0;
glBufferStorage(GL_ARRAY_BUFFER, size, data, flags);
glBufferStorage(GL_ARRAY_BUFFER, size, buf, flags);
}
else
glBufferData(GL_ARRAY_BUFFER, size, data, BufferUsageToGLenum(usage));
glBufferData(GL_ARRAY_BUFFER, size, buf, GL::BufferUsageToGLenum(usage));
gl_state.bind_array_buffer(0);
if (glGetError()) {
+14 -10
View File
@@ -34,6 +34,9 @@ static const GLuint MORPH_TEXCOORD0_INDEX = 13;
static const GLuint MORPH_TEXCOORD1_INDEX = 14;
static const GLuint BONE_INDEX_INDEX = 15;
uint32_t render_context::max_uniform_block_size = 0;
uint32_t render_context::max_storage_block_size = 0;
draw_state_stats::draw_state_stats() : sub_mesh_count(), sub_mesh_no_mat_count(),
sub_mesh_cheap_count(), field_C(), field_10(), draw_count(), draw_triangle_count(), field_1C() {
@@ -948,11 +951,11 @@ void render_context::shared_storage_buffer::destroy() {
}
size_t render_context::shared_storage_buffer::fill_data(const void* data, size_t size, size_t buffer_size) {
size_t offset = align_val(this->offset, sv_min_storage_buffer_alignment);
if (offset != this->offset)
memset((void*)((size_t)this->data + this->offset), 0, offset - this->offset);
size_t offset = this->offset;
memcpy((void*)((size_t)this->data + offset), data, size);
this->offset = offset + size;
this->offset = align_val(offset + size, sv_min_storage_buffer_alignment);
if (this->offset != offset)
memset((void*)((size_t)this->data + (offset + size)), 0, this->offset - (offset + size));
end = max_def(end, offset + buffer_size);
return offset;
}
@@ -982,11 +985,11 @@ void render_context::shared_uniform_buffer::destroy() {
}
size_t render_context::shared_uniform_buffer::fill_data(const void* data, size_t size, size_t buffer_size) {
size_t offset = align_val(this->offset, sv_min_uniform_buffer_alignment);
if (offset != this->offset)
memset((void*)((size_t)this->data + this->offset), 0, offset - this->offset);
size_t offset = this->offset;
memcpy((void*)((size_t)this->data + offset), data, size);
this->offset = offset + size;
this->offset = align_val(offset + size, sv_min_uniform_buffer_alignment);
if (this->offset != offset)
memset((void*)((size_t)this->data + (offset + size)), 0, this->offset - (offset + size));
end = max_def(end, offset + buffer_size);
return offset;
}
@@ -1254,9 +1257,10 @@ sprite_width(), sprite_height(), screen_x_offset(), screen_y_offset(), screen_wi
glSamplerParameteri(sampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
glSamplerParameterf(sampler, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16.0f);
max_uniform_block_size = min_def((uint32_t)sv_max_uniform_buffer_size, 64u * 1024);
if (!max_uniform_block_size)
max_uniform_block_size = min_def((uint32_t)sv_max_uniform_buffer_size, 64u * 1024);
if (GLAD_GL_VERSION_4_3)
if (GLAD_GL_VERSION_4_3 && !max_storage_block_size)
max_storage_block_size = min_def((uint32_t)sv_max_storage_buffer_size, 1024u * 1024);
}
+3 -3
View File
@@ -613,9 +613,6 @@ struct render_context {
int32_t screen_width;
int32_t screen_height;
uint32_t max_uniform_block_size = 0;
uint32_t max_storage_block_size = 0;
std::vector<render_context::shared_storage_buffer> shared_storage_buffers;
std::unordered_map<size_t, shared_buffer_entry> shared_storage_buffer_entries;
std::vector<render_context::shared_uniform_buffer> shared_uniform_buffers;
@@ -623,6 +620,9 @@ struct render_context {
std::vector<render_context::texture_skinning_buffer> texture_skinning_buffers;
std::unordered_map<size_t, texture_skinning_buffer_entry> texture_skinning_buffer_entries;
static uint32_t max_uniform_block_size;
static uint32_t max_storage_block_size;
render_context();
~render_context();
+6 -5
View File
@@ -1949,11 +1949,11 @@ void RobCloth::set_data(const obj_skin_ex_node_cloth* cldata,
return;
for (int32_t i = 0; i < 2; i++) {
if (!mesh[i].num_vertex || !mesh[i].vertex_array || !ib[i].ib)
if (!mesh[i].num_vertex || !mesh[i].vertex_array || !ib[i].get_glib())
continue;
VertexBuffer* vbhn_array = &vb[i];
IndexBuffer* ibhn_array = &ib[i];
VertexBuffer* vbhn = &vb[i];
IndexBuffer* ibhn = &ib[i];
obj_mesh* mesh = &this->mesh[i];
for (int32_t j = 0; j < mesh->num_submesh; j++) {
@@ -1961,9 +1961,9 @@ void RobCloth::set_data(const obj_skin_ex_node_cloth* cldata,
for (int32_t k = 0; k < (mesh->attrib.m.soft_body ? 2 : 1); k++) {
extern render_context* rctx_ptr;
rctx_ptr->disp_manager->add_vertex_array(mesh, &mesh->submesh_array[j], material,
vbhn_array->get_glvb(), vbhn_array->get_glvb_offset(), ibhn_array->ib, 0, 0);
vbhn->get_glvb(), vbhn->get_glvb_offset(), ibhn->get_glib(), 0, 0);
vbhn_array->flip();
vbhn->flip();
}
}
}
@@ -4324,6 +4324,7 @@ static void make_direction_matrix(mat4& mat, const vec3& v0, const vec3& v1) {
mat4_set(&axis, -s, c, &mat);
}
// 0x14021CF00
static void modify_cloth_object(obj_mesh* mesh, VertexBuffer* vb,
CLOTH_VERTEX* vtxarg, float_t sgn, int32_t num_idx, uint16_t* idxtbl, bool do_ura) {
if (!mesh || !vb || (mesh->vertex_format
+6 -1
View File
@@ -473,6 +473,11 @@ int32_t app_main(const app_init_struct& ais) {
glDebugMessageCallback(render_debug_output, 0);
glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
}
else if (GLAD_GL_ARB_debug_output) {
glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB);
glDebugMessageCallbackARB(render_debug_output, 0);
glDebugMessageControlARB(GL_DONT_CARE, GL_DONT_CARE, GL_DONT_CARE, 0, 0, GL_TRUE);
}
#endif
const char* vendor_string = (const char*)glGetString(GL_VENDOR);
@@ -692,7 +697,7 @@ static bool app_init(const app_init_struct& ais) {
window = glfwCreateWindow(width, height, application_name, maximized ? monitor : 0, 0);
#ifdef USE_OPENGL
else {
int32_t minor = 6;
int32_t minor = ais.max_minor_ver;
window = 0;
while (!window && minor >= 1) {
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
+7 -5
View File
@@ -30,20 +30,22 @@ enum render_scale {
struct app_init_struct {
vec2i res;
int32_t scale_index;
int32_t max_minor_ver;
bool vulkan;
const wchar_t* config_path;
inline app_init_struct() : scale_index(), vulkan(), config_path() {
inline app_init_struct() : scale_index(), max_minor_ver(), vulkan(), config_path() {
}
inline app_init_struct(bool vulkan, const wchar_t* config_path = 0)
: scale_index(), vulkan(vulkan), config_path(config_path) {
inline app_init_struct(int32_t max_minor_ver, bool vulkan, const wchar_t* config_path = 0)
: scale_index(), max_minor_ver(max_minor_ver), vulkan(vulkan), config_path(config_path) {
}
inline app_init_struct(vec2i res, int32_t scale_index, bool vulkan, const wchar_t* config_path = 0)
: res(res), scale_index(scale_index), vulkan(vulkan), config_path(config_path) {
inline app_init_struct(vec2i res, int32_t scale_index,
int32_t max_minor_ver, bool vulkan, const wchar_t* config_path = 0)
: res(res), scale_index(scale_index), max_minor_ver(max_minor_ver), vulkan(vulkan), config_path(config_path) {
}
};
+5 -2
View File
@@ -212,11 +212,14 @@ int32_t wmain(int32_t argc, wchar_t** argv) {
return 0;
}
int32_t max_minor_ver = 2;
bool vulkan = false;
const wchar_t* config_path = 0;
if (argc >= 2)
for (int32_t i = 1; i < argc; i++) {
if (!wcscmp(argv[i], L"--vulkan"))
if (!wcscmp(argv[i], L"--max-minor-ver") && i + 1 < argc)
max_minor_ver = _wtoi(argv[++i]);
else if (!wcscmp(argv[i], L"--vulkan"))
vulkan = true;
else if (!wcscmp(argv[i], L"--config") && i + 1 < argc)
config_path = argv[++i];
@@ -239,7 +242,7 @@ int32_t wmain(int32_t argc, wchar_t** argv) {
__cpuidex(cpuidex_data, 7, 0);
cpu_caps_avx2 = !!(cpuidex_data[1] & (1 << 5));
app_main({ vulkan, config_path });
app_main({ max_minor_ver, vulkan, config_path });
timeEndPeriod(1);
return 0;