Skip to content

Commit ff9456d

Browse files
committed
perform tests
1 parent 7fcd3c3 commit ff9456d

13 files changed

Lines changed: 120 additions & 15 deletions

File tree

kivy/graphics/cgl.pxd

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,7 @@ cdef extern from "gl_redirect.h":
249249
int GL_TEXTURE_CUBE_MAP_POSITIVE_Z
250250
int GL_TEXTURE_CUBE_MAP_NEGATIVE_Z
251251
int GL_MAX_CUBE_MAP_TEXTURE_SIZE
252+
int GL_TEXTURE_INTERNAL_FORMAT
252253

253254
int GL_TEXTURE0
254255
int GL_TEXTURE1
@@ -356,6 +357,8 @@ cdef extern from "gl_redirect.h":
356357
int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT
357358
int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS
358359
int GL_FRAMEBUFFER_UNSUPPORTED
360+
int GL_READ_FRAMEBUFFER
361+
int GL_DRAW_FRAMEBUFFER
359362

360363
int GL_FRAMEBUFFER_BINDING
361364
int GL_RENDERBUFFER_BINDING
@@ -399,6 +402,7 @@ ctypedef void (__stdcall *GLATTACHSHADERPTR)(GLuint, GLuint) nogil
399402
ctypedef void (__stdcall *GLBINDATTRIBLOCATIONPTR)(GLuint, GLuint, const char *) nogil
400403
ctypedef void (__stdcall *GLBINDBUFFERPTR)(GLenum, GLuint) nogil
401404
ctypedef void (__stdcall *GLBINDFRAMEBUFFERPTR)(GLenum, GLuint) nogil
405+
ctypedef void (__stdcall *GLBLITFRAMEBUFFERPTR)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) nogil
402406
ctypedef void (__stdcall *GLBINDRENDERBUFFERPTR)(GLenum target, GLuint renderbuffer) nogil
403407
ctypedef void (__stdcall *GLBINDTEXTUREPTR)(GLenum, GLuint) nogil
404408
ctypedef void (__stdcall *GLBLENDCOLORPTR)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) nogil
@@ -459,6 +463,7 @@ ctypedef void (__stdcall *GLGETSHADERIVPTR)(GLuint, GLenum, GLint *) nogil
459463
ctypedef void (__stdcall *GLGETSHADERSOURCEPTR)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) nogil
460464
ctypedef void (__stdcall *GLGETTEXPARAMETERFVPTR)(GLenum target, GLenum pname, GLfloat* params) nogil
461465
ctypedef void (__stdcall *GLGETTEXPARAMETERIVPTR)(GLenum target, GLenum pname, GLint* params) nogil
466+
ctypedef void (__stdcall *GLGETTEXLEVELPARAMETERIVPTR)(GLenum target, GLint level, GLenum pname, GLint * params) nogil
462467
ctypedef void (__stdcall *GLGETUNIFORMFVPTR)(GLuint program, GLint location, GLfloat* params) nogil
463468
ctypedef void (__stdcall *GLGETUNIFORMIVPTR)(GLuint program, GLint location, GLint* params) nogil
464469
ctypedef void (__stdcall *GLGETVERTEXATTRIBFVPTR)(GLuint index, GLenum pname, GLfloat* params) nogil
@@ -530,6 +535,7 @@ ctypedef struct GLES2_Context:
530535
void (__stdcall *glBindAttribLocation)(GLuint, GLuint, const char *) nogil
531536
void (__stdcall *glBindBuffer)(GLenum, GLuint) nogil
532537
void (__stdcall *glBindFramebuffer)(GLenum, GLuint) nogil
538+
void (__stdcall *glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) nogil
533539
void (__stdcall *glBindRenderbuffer)(GLenum target, GLuint renderbuffer) nogil
534540
void (__stdcall *glBindTexture)(GLenum, GLuint) nogil
535541
void (__stdcall *glBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) nogil
@@ -590,6 +596,7 @@ ctypedef struct GLES2_Context:
590596
void (__stdcall *glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) nogil
591597
void (__stdcall *glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params) nogil
592598
void (__stdcall *glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params) nogil
599+
void (__stdcall *glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params) nogil
593600
void (__stdcall *glGetUniformfv)(GLuint program, GLint location, GLfloat* params) nogil
594601
void (__stdcall *glGetUniformiv)(GLuint program, GLint location, GLint* params) nogil
595602
void (__stdcall *glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params) nogil

kivy/graphics/cgl.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,8 @@ cdef void log_cgl_funcs() except *:
135135
Logger.debug('GL: glBindBuffer is not available')
136136
if cgl.glBindFramebuffer == NULL:
137137
Logger.debug('GL: glBindFramebuffer is not available')
138+
if cgl.glBlitFramebuffer == NULL:
139+
Logger.debug('GL: glBlitFramebuffer is not available')
138140
if cgl.glBindRenderbuffer == NULL:
139141
Logger.debug('GL: glBindRenderbuffer is not available')
140142
if cgl.glBindTexture == NULL:
@@ -267,6 +269,8 @@ cdef void log_cgl_funcs() except *:
267269
Logger.debug('GL: glGetTexParameterfv is not available')
268270
if cgl.glGetTexParameteriv == NULL:
269271
Logger.debug('GL: glGetTexParameteriv is not available')
272+
if cgl.glGetTexLevelParameteriv == NULL:
273+
Logger.debug('GL: glGetTexLevelParameteriv is not available')
270274
if cgl.glGetUniformfv == NULL:
271275
Logger.debug('GL: glGetUniformfv is not available')
272276
if cgl.glGetUniformiv == NULL:

kivy/graphics/cgl_backend/cgl_angle.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ def init_backend():
2727
cgl.glBindAttribLocation = <GLBINDATTRIBLOCATIONPTR>eglGetProcAddress("glBindAttribLocation")
2828
cgl.glBindBuffer = <GLBINDBUFFERPTR>eglGetProcAddress("glBindBuffer")
2929
cgl.glBindFramebuffer = <GLBINDFRAMEBUFFERPTR>eglGetProcAddress("glBindFramebuffer")
30+
cgl.glBlitFramebuffer = <GLBLITFRAMEBUFFERPTR>eglGetProcAddress("glBlitFramebuffer")
3031
cgl.glBindRenderbuffer = <GLBINDRENDERBUFFERPTR>eglGetProcAddress("glBindRenderbuffer")
3132
cgl.glBindTexture = <GLBINDTEXTUREPTR>eglGetProcAddress("glBindTexture")
3233
cgl.glBlendColor = <GLBLENDCOLORPTR>eglGetProcAddress("glBlendColor")
@@ -93,6 +94,7 @@ def init_backend():
9394
cgl.glGetString = <GLGETSTRINGPTR>eglGetProcAddress("glGetString")
9495
cgl.glGetTexParameterfv = <GLGETTEXPARAMETERFVPTR>eglGetProcAddress("glGetTexParameterfv")
9596
cgl.glGetTexParameteriv = <GLGETTEXPARAMETERIVPTR>eglGetProcAddress("glGetTexParameteriv")
97+
cgl.glGetTexLevelParameteriv = <GLGETTEXLEVELPARAMETERIVPTR>eglGetProcAddress("glGetTexLevelParameteriv")
9698
cgl.glGetUniformfv = <GLGETUNIFORMFVPTR>eglGetProcAddress("glGetUniformfv")
9799
cgl.glGetUniformiv = <GLGETUNIFORMIVPTR>eglGetProcAddress("glGetUniformiv")
98100
cgl.glGetUniformLocation = <GLGETUNIFORMLOCATIONPTR>eglGetProcAddress("glGetUniformLocation")

kivy/graphics/cgl_backend/cgl_debug.pyx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,17 @@ cdef void __stdcall gil_dbgBindFramebuffer (GLenum target, GLuint framebuffer) w
6464
cgl_native.glBindFramebuffer ( target, framebuffer)
6565
gl_check_error()
6666

67+
cdef void __stdcall bdglBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0,
68+
GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask,
69+
GLenum filter) nogil:
70+
with gil:
71+
gil_glBlitFramebuffer(srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter)
72+
73+
cdef void __stdcall gil_glBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0,
74+
GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask,
75+
GLenum filter) with gil:
76+
gl_debug_print("GL glBlitFramebuffer( srcX0 = ", srcX0, ", srcY0 = ", srcY0, ", srcX1 = ", srcX1, ", srcY1 = ", srcY1, ", dstX0 = ", dstX0, ", dstY0 = ", dstY0, ", dstX1 = ", dstX1, ", dstY1 = ", dstY1, ", mask = ", mask, ", filter = ", filter, ", )")
77+
6778
cdef void __stdcall dbgBindRenderbuffer (GLenum target, GLuint renderbuffer) nogil:
6879
with gil:
6980
gil_dbgBindRenderbuffer(target, renderbuffer)
@@ -682,6 +693,15 @@ cdef void __stdcall gil_dbgGetTexParameteriv (GLenum target, GLenum pname, GLint
682693
cgl_native.glGetTexParameteriv ( target, pname, params)
683694
gl_check_error()
684695

696+
cdef void __stdcall dbgGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) nogil:
697+
with gil:
698+
gil_dbgGetTexLevelParameteriv(target, level, pname, params)
699+
700+
cdef void __stdcall gil_dbgGetTexLevelParameteriv (GLenum target, GLint level, GLenum pname, GLint* params) with gil:
701+
gl_debug_print("GL glGetTexLevelParameteriv( target = ", target, ", level = ", level, ", pname = ", pname, ", params*=", repr(hex(<long long> params)), ", )")
702+
cgl_native.glGetTexLevelParameteriv ( target, level, pname, params)
703+
gl_check_error()
704+
685705
cdef void __stdcall dbgGetUniformfv (GLuint program, GLint location, GLfloat* params) nogil:
686706
with gil:
687707
gil_dbgGetUniformfv(program, location, params)
@@ -1360,6 +1380,7 @@ def init_backend_debug():
13601380
cgl_debug.glGetString = dbgGetString
13611381
cgl_debug.glGetTexParameterfv = dbgGetTexParameterfv
13621382
cgl_debug.glGetTexParameteriv = dbgGetTexParameteriv
1383+
cgl_debug.glGetTexLevelParameteriv = dbgGetTexLevelParameteriv
13631384
cgl_debug.glGetUniformfv = dbgGetUniformfv
13641385
cgl_debug.glGetUniformiv = dbgGetUniformiv
13651386
cgl_debug.glGetUniformLocation = dbgGetUniformLocation

kivy/graphics/cgl_backend/cgl_gl.pyx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ cdef extern from "gl_redirect.h":
2828
void (__stdcall *glBindAttribLocation)(GLuint, GLuint, const char *) nogil
2929
void (__stdcall *glBindBuffer)(GLenum, GLuint) nogil
3030
void (__stdcall *glBindFramebuffer)(GLenum, GLuint) nogil
31+
void (__stdcall *glBlitFramebuffer)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum) nogil
3132
void (__stdcall *glBindRenderbuffer)(GLenum target, GLuint renderbuffer) nogil
3233
void (__stdcall *glBindTexture)(GLenum, GLuint) nogil
3334
void (__stdcall *glBlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha) nogil
@@ -88,6 +89,7 @@ cdef extern from "gl_redirect.h":
8889
void (__stdcall *glGetShaderSource)(GLuint shader, GLsizei bufsize, GLsizei* length, GLchar* source) nogil
8990
void (__stdcall *glGetTexParameterfv)(GLenum target, GLenum pname, GLfloat* params) nogil
9091
void (__stdcall *glGetTexParameteriv)(GLenum target, GLenum pname, GLint* params) nogil
92+
void (__stdcall *glGetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint* params) nogil
9193
void (__stdcall *glGetUniformfv)(GLuint program, GLint location, GLfloat* params) nogil
9294
void (__stdcall *glGetUniformiv)(GLuint program, GLint location, GLint* params) nogil
9395
void (__stdcall *glGetVertexAttribfv)(GLuint index, GLenum pname, GLfloat* params) nogil
@@ -160,6 +162,7 @@ cpdef link_static():
160162
cgl.glBindAttribLocation = glBindAttribLocation
161163
cgl.glBindBuffer = glBindBuffer
162164
cgl.glBindFramebuffer = glBindFramebuffer
165+
cgl.glBlitFramebuffer = glBlitFramebuffer
163166
cgl.glBindRenderbuffer = glBindRenderbuffer
164167
cgl.glBindTexture = glBindTexture
165168
cgl.glBlendColor = glBlendColor
@@ -226,6 +229,7 @@ cpdef link_static():
226229
cgl.glGetString = glGetString
227230
cgl.glGetTexParameterfv = glGetTexParameterfv
228231
cgl.glGetTexParameteriv = glGetTexParameteriv
232+
cgl.glGetTexLevelParameteriv = glGetTexLevelParameteriv
229233
cgl.glGetUniformfv = glGetUniformfv
230234
cgl.glGetUniformiv = glGetUniformiv
231235
cgl.glGetUniformLocation = glGetUniformLocation

kivy/graphics/cgl_backend/cgl_glew.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ IF not USE_OPENGL_MOCK and PLATFORM == "win32":
6363
cgl.glGetRenderbufferParameteriv = <GLGETRENDERBUFFERPARAMETERIVPTR> f("glGetRenderbufferParameteriv")
6464
cgl.glIsFramebuffer = <GLISFRAMEBUFFERPTR> f("glIsFramebuffer")
6565
cgl.glBindFramebuffer = <GLBINDFRAMEBUFFERPTR> f("glBindFramebuffer")
66+
cgl.glBlitFramebuffer = <GLBLITFRAMEBUFFERPTR> f("glBlitFramebuffer")
6667
cgl.glDeleteFramebuffers = <GLDELETEFRAMEBUFFERSPTR> f("glDeleteFramebuffers")
6768
cgl.glGenFramebuffers = <GLGENFRAMEBUFFERSPTR> f("glGenFramebuffers")
6869
cgl.glCheckFramebufferStatus = <GLCHECKFRAMEBUFFERSTATUSPTR> f("glCheckFramebufferStatus")
@@ -83,6 +84,7 @@ IF not USE_OPENGL_MOCK and PLATFORM == "win32":
8384
cgl.glGetRenderbufferParameteriv = <GLGETRENDERBUFFERPARAMETERIVPTR> f("glGetRenderbufferParameterivEXT")
8485
cgl.glIsFramebuffer = <GLISFRAMEBUFFERPTR> f("glIsFramebufferEXT")
8586
cgl.glBindFramebuffer = <GLBINDFRAMEBUFFERPTR> f("glBindFramebufferEXT")
87+
cgl.glBlitFramebuffer = <GLBLUTFRAMEBUFFERPTR> f ("glBlitFramebufferEXT")
8688
cgl.glDeleteFramebuffers = <GLDELETEFRAMEBUFFERSPTR> f("glDeleteFramebuffersEXT")
8789
cgl.glGenFramebuffers = <GLGENFRAMEBUFFERSPTR> f("glGenFramebuffersEXT")
8890
cgl.glCheckFramebufferStatus = <GLCHECKFRAMEBUFFERSTATUSPTR> f("glCheckFramebufferStatusEXT")

kivy/graphics/cgl_backend/cgl_mock.pyx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ cdef void __stdcall mockBindBuffer(GLenum target, GLuint buffer) nogil:
5050
pass
5151
cdef void __stdcall mockBindFramebuffer(GLenum target, GLuint framebuffer) nogil:
5252
pass
53+
cdef void __stdcall mockBlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter) nogil:
54+
pass
5355
cdef void __stdcall mockBindRenderbuffer(GLenum target, GLuint renderbuffer) nogil:
5456
pass
5557
cdef void __stdcall mockBindTexture(GLenum target, GLuint texture) nogil:
@@ -176,6 +178,8 @@ cdef void __stdcall mockGetTexParameterfv(GLenum target, GLenum pname, GLfloat*
176178
pass
177179
cdef void __stdcall mockGetTexParameteriv(GLenum target, GLenum pname, GLint* params) nogil:
178180
pass
181+
cdef void __stdcall mockGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) nogil:
182+
pass
179183
cdef void __stdcall mockGetUniformfv(GLuint program, GLint location, GLfloat* params) nogil:
180184
pass
181185
cdef void __stdcall mockGetUniformiv(GLuint program, GLint location, GLint* params) nogil:
@@ -232,6 +236,8 @@ cdef void __stdcall mockTexParameteri(GLenum target, GLenum pname, GLint param)
232236
pass
233237
# cdef void __stdcall mockTexParameteriv(GLenum target, GLenum pname, GLint* params) nogil:
234238
# pass
239+
cdef void __stdcall mockTextLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint* params) nogil:
240+
pass
235241
cdef void __stdcall mockTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid* pixels) nogil:
236242
pass
237243
cdef void __stdcall mockUniform1f(GLint location, GLfloat x) nogil:
@@ -304,6 +310,7 @@ def init_backend():
304310
cgl.glBindAttribLocation = mockBindAttribLocation
305311
cgl.glBindBuffer = mockBindBuffer
306312
cgl.glBindFramebuffer = mockBindFramebuffer
313+
cgl.glBlitFramebuffer = mockBlitFramebuffer
307314
cgl.glBindRenderbuffer = mockBindRenderbuffer
308315
cgl.glBindTexture = mockBindTexture
309316
cgl.glBlendColor = mockBlendColor
@@ -370,6 +377,7 @@ def init_backend():
370377
cgl.glGetString = mockGetString
371378
cgl.glGetTexParameterfv = mockGetTexParameterfv
372379
cgl.glGetTexParameteriv = mockGetTexParameteriv
380+
cgl.glGetTexLevelParameteriv = mockGetTexLevelParameteriv
373381
cgl.glGetUniformfv = mockGetUniformfv
374382
cgl.glGetUniformiv = mockGetUniformiv
375383
cgl.glGetUniformLocation = mockGetUniformLocation

kivy/graphics/cgl_backend/cgl_sdl3.pyx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ def init_backend():
2626
cgl.glBindAttribLocation = <GLBINDATTRIBLOCATIONPTR>SDL_GL_GetProcAddress("glBindAttribLocation")
2727
cgl.glBindBuffer = <GLBINDBUFFERPTR>SDL_GL_GetProcAddress("glBindBuffer")
2828
cgl.glBindFramebuffer = <GLBINDFRAMEBUFFERPTR>SDL_GL_GetProcAddress("glBindFramebuffer")
29+
cgl.glBlitFramebuffer = <GLBLITFRAMEBUFFERPTR>SDL_GL_GetProcAddress("glBlitFramebuffer")
2930
cgl.glBindRenderbuffer = <GLBINDRENDERBUFFERPTR>SDL_GL_GetProcAddress("glBindRenderbuffer")
3031
cgl.glBindTexture = <GLBINDTEXTUREPTR>SDL_GL_GetProcAddress("glBindTexture")
3132
cgl.glBlendColor = <GLBLENDCOLORPTR>SDL_GL_GetProcAddress("glBlendColor")
@@ -92,6 +93,7 @@ def init_backend():
9293
cgl.glGetString = <GLGETSTRINGPTR>SDL_GL_GetProcAddress("glGetString")
9394
cgl.glGetTexParameterfv = <GLGETTEXPARAMETERFVPTR>SDL_GL_GetProcAddress("glGetTexParameterfv")
9495
cgl.glGetTexParameteriv = <GLGETTEXPARAMETERIVPTR>SDL_GL_GetProcAddress("glGetTexParameteriv")
96+
cgl.glGetTexLevelParameteriv = <GLGETTEXLEVELPARAMETERIVPTR>SDL_GL_GetProcAddress("glGetTexLevelParameteriv")
9597
cgl.glGetUniformfv = <GLGETUNIFORMFVPTR>SDL_GL_GetProcAddress("glGetUniformfv")
9698
cgl.glGetUniformiv = <GLGETUNIFORMIVPTR>SDL_GL_GetProcAddress("glGetUniformiv")
9799
cgl.glGetUniformLocation = <GLGETUNIFORMLOCATIONPTR>SDL_GL_GetProcAddress("glGetUniformLocation")

kivy/graphics/fbo.pyx

Lines changed: 39 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -499,31 +499,55 @@ cdef class Fbo(RenderContext):
499499
500500
.. versionadded:: 1.8.0
501501
"""
502-
cdef GLint encoding
502+
cdef GLint internalFormat
503+
cdef GLuint linearFBO, linearTex
503504

504505
if wx > self._width or wy > self._height:
505506
# window coordinates should not exceed the
506507
# frame buffer size
507508
return (0, 0, 0, 0)
508509

509-
self.bind()
510+
# self.bind()
511+
512+
# data = py_glReadPixels(wx, wy, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE)
513+
# self.release()
514+
515+
DEF GL_RGBA8 = 0x8058
516+
#GLuint linearFBO, linearTex;
517+
cgl.glGenFramebuffers(1, &linearFBO)
518+
cgl.glGenTextures(1, &linearTex)
519+
cgl.glBindTexture(GL_TEXTURE_2D, linearTex)
520+
cgl.glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, self._width, self._height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL)
521+
cgl.glBindFramebuffer(GL_FRAMEBUFFER, linearFBO)
522+
cgl.glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, linearTex, 0)
510523

524+
# glBindFramebuffer(GL_READ_FRAMEBUFFER, srgbFBO);
525+
cgl.glBindFramebuffer(GL_READ_FRAMEBUFFER, self.buffer_id)
526+
cgl.glBindFramebuffer(GL_DRAW_FRAMEBUFFER, linearFBO)
527+
cgl.glBlitFramebuffer(0, 0, self._width, self._height, 0, 0, self._width, self._height, GL_COLOR_BUFFER_BIT, GL_NEAREST)
528+
529+
# // Now read linear values
530+
cgl.glBindFramebuffer(GL_READ_FRAMEBUFFER, linearFBO);
531+
# cgl.glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
511532
data = py_glReadPixels(wx, wy, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE)
512533

513-
cgl.glGetFramebufferAttachmentParameteriv(
514-
GL_FRAMEBUFFER,
515-
GL_COLOR_ATTACHMENT0,
516-
GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
517-
&encoding
518-
)
534+
# cgl.glBindTexture(self._texture._target, self._texture._id)
535+
# cgl.glGetTexLevelParameteriv(self._texture._target, 0, GL_TEXTURE_INTERNAL_FORMAT, &internalFormat)
519536

520-
if encoding == GL_SRGB:
521-
# convert from sRGB to linear RGB
522-
data[0] = srgb_to_linear(data[0] / 255.0)
523-
data[1] = srgb_to_linear(data[1] / 255.0)
524-
data[2] = srgb_to_linear(data[2] / 255.0)
525-
data[3] = data[3] / 255.0
537+
#bool isSrgb = (internalFormat == GL_SRGB8 ||
538+
# internalFormat == GL_SRGB8_ALPHA8 ||
539+
# internalFormat == GL_COMPRESSED_SRGB ||
540+
# internalFormat == GL_COMPRESSED_SRGB_ALPHA);
526541

527-
self.release()
542+
#if encoding == GL_SRGB:
543+
# # convert from sRGB to linear RGB
544+
# data[0] = srgb_to_linear(data[0] / 255.0)
545+
# data[1] = srgb_to_linear(data[1] / 255.0)
546+
# data[2] = srgb_to_linear(data[2] / 255.0)
547+
# data[3] = data[3] / 255.0
548+
# data = [internalFormat, internalFormat, internalFormat, internalFormat]
549+
550+
551+
# self.release()
528552

529553
return [i for i in data]

0 commit comments

Comments
 (0)