View Issue Details

IDProjectCategoryView StatusLast Update
0005067The Dark ModGraphicspublic16.12.2019 13:34
Reporterstgatilov Assigned Toduzenko  
Status resolvedResolutionfixed 
Product VersionSVN 
Target VersionTDM 2.08Fixed in VersionTDM 2.08 
Summary0005067: Postprocessing doesn't work in core profile (RB_DrawFullScreenQuad)
DescriptionOriginally reported here:

Postprocessing draws full-screen quad with RB_DrawFullScreenQuad function, but this function uses glBegin/glVertex/glEnd stuff (immediate-mode rendering), which is not present in Core profile.
Steps To Reproduce1) Enable "r_postprocess 1" and "r_glCoreProfile 2" and restart TDM.
2) Start any map.

Most likely you also need VM or some driver which does not support ARB_compatibility extension to be a crash.
Or you can use some debug info to verify that deprecated functionality is used.
TagsNo tags attached.




15.12.2019 18:24

developer   ~0011935

Actually, Duzenko has fixed it in 8427 by embedding a full-screen quad geometry into VertexCache singleton.
I would be very glad to see some generic solution for porting the ton of graphical debugging tools to core profile, but that's another issue already.

P.S. I always hoped for some sort of wrapper class with interface closely matching the OpenGL immediate-mode rendering...


15.12.2019 19:53

developer   ~0011936

That would be a lot of fun to design and write, not so much to maintain.
But practically rewriting tools for core context is a final solution, that takes very little effort (per each individual use case)


16.12.2019 13:33

developer   ~0011937

Why is the immediate-mode renderer class hard to maintain?
I don't suggest full GL emulation, just some easy way to specify vertices, colors, and similar stuff.

Writing buffers directly with GL3 will be cumbersome.
I guess, this is exactly why Carmack said "There is no good technical reason for the existance of D3D." at the times of Quake 2 development:

Immediate mode GL has mediocre performance, but it is very easy to use and experiment with. This is helpful for debug visualization tools.
If you rewrite every tool by hand to create some weird buffers, then I'm afraid nobody will ever create new such tools any more...


16.12.2019 13:34

developer   ~0011938

Oh, on the other hand idRenderWorldLocal already serves as such a wrapper: it provides methods called "Debug*".
If everything uses only these methods, then new class is not necessary at all =)

Issue History

Date Modified Username Field Change
30.11.2019 17:35 stgatilov New Issue
30.11.2019 17:35 stgatilov Status new => assigned
30.11.2019 17:35 stgatilov Assigned To => cabalistic
15.12.2019 18:24 stgatilov Note Added: 0011935
15.12.2019 18:25 stgatilov Assigned To cabalistic => duzenko
15.12.2019 18:25 stgatilov Status assigned => resolved
15.12.2019 18:25 stgatilov Resolution open => fixed
15.12.2019 18:25 stgatilov Fixed in Version => TDM 2.08
15.12.2019 19:53 duzenko Note Added: 0011936
16.12.2019 13:33 stgatilov Note Added: 0011937
16.12.2019 13:34 stgatilov Note Added: 0011938