summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibGL/GLUtils.cpp
AgeCommit message (Collapse)Author
2021-08-14LibGL: Implement glEnableClientState and glDisableClientStateStephan Unverwerth
2021-08-14LibGL: Implement glDepthMaskStephan Unverwerth
2021-06-09LibGL: Implement very basic version of glGetFloatvErik Biederstadt
This is a very basic implementation of glGetfloatv. It will only give a result when used with GL_MODELVIEW_MATRIX. In the future we can update and extend it's functionality.
2021-05-29Everywhere: Use s.unverwerth@serenityos.org :^)Stephan Unverwerth
2021-05-24LibGL: Implement glReadPixels() stub with argument validationStephan Unverwerth
2021-05-24LibGL: Implement glReadBuffer()Stephan Unverwerth
2021-05-20LibGL: Implement glHint()Stephan Unverwerth
2021-05-14LibGL: Implement glFlush() and glFinish()Stephan Unverwerth
2021-05-09LibGL: Add supporting code for depth bufferStephan Unverwerth
This adds glClearDepth() and new caps for enabling and disabling the depth buffer with glEnable() and glDisable()
2021-05-08LibGL: Add software rasterizerStephan Unverwerth
This is based mostly on Fabian "ryg" Giesen's 2011 blog series "A trip through the Graphics Pipeline" and Scratchapixel's "Rasterization: a Practical Implementation". The rasterizer processes triangles in grid aligned 16x16 pixel blocks, calculates barycentric coordinates and edge derivatives and interpolates bilinearly across each block. This will theoretically allow for better utilization of modern processor features such as SMT and SIMD, as opposed to a classic scanline based triangle rasterizer. This serves as a starting point to get something on the screen. In the future we might look into properly pipelining the main loop to make the rasterizer more flexible, enabling us to enable/disable certain features at the block rather than the pixel level.
2021-05-08LibGL: Add back face culling functionsStephan Unverwerth
Adds all needed functions to support back face culling and implements back face culling in the SoftwareGLContext.
2021-05-08LibGL: Implement glGetError and underlying functionJesse Buhagiar
This implements `glGetError` and correctly sets the state machine's error macro (similar to LibC `errno`) when an invalid operation is performed. This is reset on completion of a successful operation.
2021-05-08LibGL: Implement a basic OpenGL 1.x compatible libraryJesse Buhagiar
This currently (obviously) doesn't support any actual 3D hardware, hence all calls are done via software rendering. Note that any modern constructs such as shaders are unsupported, as this driver only implements Fixed Function Pipeline functionality. The library is split into a base GLContext interface and a software based renderer implementation of said interface. The global glXXX functions serve as an OpenGL compatible c-style interface to the currently bound context instance. Co-authored-by: Stephan Unverwerth <s.unverwerth@gmx.de>