Code360 powered by Coding Ninjas X Code360 powered by Coding Ninjas X
Table of contents
Batches and Groups
Data item Parameters
Drawing Modes
Batch Class
Batch Group
Frequently Asked Questions
What exactly is a Pyglet batch?
What is meant by batch rendering?
What are the graphics that pyglet employs?
Last Updated: Mar 27, 2024

Graphics in Pyglet

Master Python: Predicting weather forecasts
Ashwin Goyal
Product Manager @


We all know that graphics play a significant and crucial role in gaming. In gaming, it is all about the graphics. Hence if we talk about pyglet, graphics must be there in this technology.

So today, we will discuss the graphics in pyglet and the used libraries.


Pyglet has an event loop and routines for 2D graphics (with the help of another library, OpenGL). Pyglet creates graphics in programme windows at the lowest level using OpenGL. The module offers the OpenGL interface.

Using the OpenGL interface directly, on the other hand, can be time-consuming. The pyglet graphics module provides a more straightforward method of generating images using vertex arrays and buffer objects internally to improve speed.


Over OpenGL, this module provides an efficient low-level abstraction. It renders OpenGL primitives very quickly, significantly faster than the standard immediate-mode implementation, and, in many situations, faster than utilising display lists on recent graphics cards. Other parts of the pyglet use the module internally.

For more information on how to utilise this graphics API, see the Programming Guide.

Batches and Groups

Developers can use Batch and Group objects to boost the performance of sprite and text rendering without having to grasp the technicalities of how to draw primitives with the graphics API.


The constructors of the Sprite, Label and TextLayout classes all accept a batch and group parameter. A batch is used to handle a collection of items that will be rendered all at once, while a group is used to specify how an object is drawn.

The example below generates a batch, adds two sprites to it, and then draws the entire batch:

#creating the batch
batch =
#adding two sprites
book = pyglet.sprite.Sprite(book_image, batch=batch)
pen = pyglet.sprite.Sprite(pen_image, batch=batch)

# on_draw event
def on_draw()

Drawing a batch as a whole is substantially faster than drawing each individual item in the batch, especially when the objects all belong to the same group.

Data item Parameters

The final parameters of many of the functions and methods in this module can be any number of data parameters.


A data parameter specifies the format of a vertex attribute as well as an optional sequence for initialising it. The following are some examples of typical attribute formats:

  • v2f: Two float points are used to specify the vertex position. 
  • c3B: Three unsigned bytes are used to specify the vertex colour. 
  • t4f: Four float points are used to specify the texture coordinate.

Drawing Modes

Any value in the OpenGL drawing mode enumeration will be accepted by methods in this module that receive a mode parameter; for example, GL_POINTS, GL_LINES, GL_TRIANGLES, and so on.


GL_POLYGON, GL_LINE_LOOP, and GL_TRIANGLE_FAN cannot be utilised because of the way the graphics API produces multiple primitives with a shared state- the results are undefined.


Here are some examples of submodules that help in the working of graphics in pyglet.



Here are some examples of classes that help in the working of graphics in pyglet.


Get the tech career you deserve, faster!
Connect with our expert counsellors to understand how to hack your way to success
User rating 4.7/5
1:1 doubt support
95% placement record
Akash Pal
Senior Software Engineer
326% Hike After Job Bootcamp
Himanshu Gusain
Programmer Analyst
32 LPA After Job Bootcamp
After Job

Batch Class

It keeps track of a set of vertex lists for batch rendering.

The add and add_indexed methods are used to add vertex lists to a Batch. Along with the vertex list, an optional group can be given, which specifies the OpenGL state necessary for rendering. In a single operation, shared mode and group vertex lists are allocated into adjacent memory locations and delivered to the graphics hardware.

To remove a vertex list from the batch, use VertexList.delete.


The Batch class contains several methods. It can be used for the VertexList and IndexedVertexList.

We can use the following methods:

  • _init_(self)
  • add(self, count, mode, group,  *data)
  • add_indexed(self, count, mode, group, indices, *data)
  • migrate
  • draw
  • draw_subset

Batch Group

It is a collection of common OpenGL states.

The OpenGL state of a vertex list's group, as well as the states of its ancestors, is set before it is rendered. The default state modification has no effect and organises vertex lists simply in the order in which they are drawn.


The Group class contains several methods. Some examples of the group class methods are as follows:

  • _init_(self, parent = None)
  • set_state
  • unset_state
  • set_state_recursive
  • unset_state_recursive

Frequently Asked Questions

What exactly is a Pyglet batch?

A batch use handles a set of items that will render simultaneously, whereas a group indicates how will draw an object.

What is meant by batch rendering?

Shaderlight's ability to generate many renderings in a single render session is called batch rendering. Shaderlight's dynamic preview and Animation tools are used in the batch rendering process.

What are the graphics that pyglet employs?

The following are the essential graphics that we use in Pyglet:

  1. allocation
  2. vertex attribute
  3. vertex buffer
  4. vertex domain


This article extensively discusses the working of pyglet with the keyboard and different types of keyboard events and defines vital symbols.

We hope that this blog has helped you enhance your knowledge regarding the working of keyboards in Pyglet, and if you would like to grasp more, check out our articles on Pyglet and Pygame.  

Check out our article on 19 Best Python Frameworks and learn more about Python by visiting the Python category at Coding Ninjas. Visit our excellent articles to understand basic concepts of Python like Arrays, Lists, Iterators, generatorsVariablesFunctions, etc.

Do upvote our blog to help other ninjas grow.

Head over to our practice platform Coding Ninjas Studio to practice top problems, attempt mock tests, read interview experiences, interview bundle, follow guided paths for placement preparations, and much more!!

We wish you Good Luck! Keep coding and keep reading Ninja!!

Previous article
Working with Other Input devices in Pyglet
Next article
Displaying Text in Pyglet
Live masterclass