replace OpenGL immediate mode in Blender 2.8
Open, NormalPublic


OpenGL 3.3 core profile does not support glBegin/glEnd/glVertex and related functions.

Replace all calls with VBOs & glDrawArrays/glDrawElements, or (preferably) with Gawain's immediate mode work-alike.

We must complete this task before switching to core profile.

The call for volunteers has more information about what needs to be done and how people can get involved.

We're tracking progress on this page, where you can browse files that need work and claim a piece of the action!


Differential Revisions
D2584: blender2.8: Initialize immediate mode in Animation Player
D2580: Replaced UI_ThemeColor with immUniformThemeColor
D2548: OpenGL immediate mode: finish editarmarture_sketch.c
D2515: blender2.8: convert paint_stroke to new immediate mode
D2438: Updates the tree element to use retained mode
D2437: Updating outliner_draw_hierarchy_lines to use retained mode
D2433: Updates to outliner_draw_highlights_recursive under the blender2.8 branch
D2497: blender2.8: New immediate mode for sculpt_uv.c
D2486: Converted clip_dopesheet_draw.c to new immediate mode. (Part of T49043)
D2485: blender 2.8: OpenGL immediate mode: view3d_ruler.c
D2484: blender 2.8: OpenGL immediate mode: drawanimviz.c
D2483: blender 2.8: OpenGL immediate mode: transform_constraints.c
D2482: blender 2.8: OpenGL immediate mode: transform_generics.c
D2481: blender 2.8: OpenGL immediate mode: editmesh_knife.c
D2480: blender 2.8: OpenGL immediate mode: editmesh_loopcut.c
D2391: OpenGL: updated clip_utils.c to new immediate mode
D2359: Blender 2.8: OpenGL immediate mode: transform
D2369: OpenGL: updated clip_utils.c to new immediate mode
D2373: OpenGL: updated keyframes_draw.c to new immediate mode
D2434: Updating outliner_draw_struct_marks to retained mode
D2371: Converted mask_draw.c to new immediate mode
D2377: OpenGL: convert anim_channel_defines.c to new imm mode
D2364: Replacing UI_view2d_scrollsers_draw() to immedaite mode
D2363: Moved UI_view2_multi_grid_draw() to Gawain
D2376: Blender 2.8: OpenGL: immediate mode for wm_gesture.c (+ needed vert and frag shaders for dashed lines)
D2316: OpenGL: updated transform.c to new immediate mode
D2305: OpenGL: textview port to immediate mode -> T49043
D2361: blender 2.8: OpenGL immediate mode: area
D2355: blender 2.8: OpenGL immediate mode: anim_markers
D2353: blender 2.8: OpenGL immediate mode: anim_draw
D2352: T49043: Replace OpenGL immediate mode in Blender 2.8 (action_draw.c)
D2337: blender 2.8: Opengl: UI_draw_roundbox
D2336: blender 2.8: OpenGL immediate mode: node_draw_preview_background
D2312: Blender 2.8: OpenGL: new immediate mode for paint_image.c
D2311: Blender 2.8: OpenGL: new immediate mode for wm_operators.c
D2306: Blender 2.8: OpenGL: new immediate mode API for screendump.c
D2294: blender 2.8: OpenGL: New bezier curve shader and use in node editor.
D2288: Blender 2.8: OpenGL: trying to replace immediate mode in wm_playanim.c
D2286: blender 2.8: OpenGL: node_circle_draw use now immediate mode
D2281: blender 2.8; OpenGL. ui_panel_category_draw_tab with immediate API
D2274: Blender 2.8: OpenGL: replace old GL with the new immediate API in UI_draw_roundbox_gl_mode
rBdbe23c545649: OpenGL immediate mode: sequencer_draw.c
rBa39a459a1ecb: OpenGL immediate mode: interface_draw.c (cont)
rB8aa8165e85d4: OpenGL: convert legacy calls in transform.c
rB05117d71a35d: OpenGL: draw cameras with new immediate mode
To Do

Related Objects

There are a very large number of changes, so older changes are hidden. Show Older Changes

Hi i would like to help. Can i take uvedit_draw.c or should i start somewhere else?

I'm taking screen_draw.c. Thanks.

@Ryan Reyes (ryry) @Punya Biswal (punya) @Sebastian Witt (witt) @Darwin Yip (darwin) I couldn't find your contact. But we've just sent a round of emails to get in touch with past contributors of this taskforce. The message goes as follow:

Hi there,

This is a friendly email to invite you to get back at our beloved
OpenGL TaskForce :) I understand life makes it hard some times. But in
case your distance from the development process is due to the process
itself, please do tell us. We would love to hear and address it.

Very well, we are close to one of our initial marks. That said we will
start a new stage soon. Once the immediate mode replacement is over
and the new matrix API is finished and documented. So yes, plenty of
work ahead indeed.

Anyways, thanks for your involvement in the task force. We hope you
can back on this or any future projects.

Best regards,
Dalai and Mike

If you have any question don't hesitate in contacting us directly via email, irc, or through here.

Hey everyone, I updated the call for help wiki page with recommended coding style. It's worth another read even if you've been doing this a while, to clarify how the new API works.

We're getting closer to done!

Mike Erwin have told me a about the task editarmature_sketch.c, please someone mark this file in wike page for me

I am working on paint_cursor.c

Khanh Ha (khanh_ha) added a comment.EditedMar 16 2017, 11:08 AM

can't work on paint_cursor.c because the line circle drawing was refactored, and circle/line drawing feature crashes while evaluating curve.
I am looking for a new file

This comment was removed by Khanh Ha (khanh_ha).

@Khanh Ha (khanh_ha) why not tackling this crash then? we will need to fix it anyways :)