Jump to content
  • Advertisement
Sign in to follow this  

OpenGL GLTools - Variable size of Vertices with GLBatch

Recommended Posts

Posted (edited)

I am very new to OpenGL so I am using GLTools to learn the basics.

For the start I would like to create a circle with adjustable tesselation (e.g. the number of triangles which form the circle).

I have a toolbar with a variable tesselation:

TwBar *bar;
void InitGUI() {
    bar = TwNewBar("TweakBar");
    TwDefine(" TweakBar size='200 400'");
    TwAddVarRW(bar, "Tesselation", TW_TYPE_UINT32, &tesselation, "");

Then I have these two functions and global variables which calculate the vertices for the circle:

GLBatch circle;

unsigned int tesselation = 8;

void topAndBottomGeometry(M3DVector3f *vertices, M3DVector4f *colors, const int vertOffset) {
	m3dLoadVector3(vertices[0], 0, 0, vertOffset);
	m3dLoadVector4(colors[0], 0, 0, 1, 1);

	int i = 1;
	int color = 1;
	for (int step = 0; step <= tesselation; step++) {
		const double angle = step * ((2.0 * GL_PI) / tesselation);
		const double x = width * sin(angle);
		const double y = width * cos(angle);

		if ((color % 2) == 0) {
			m3dLoadVector4(colors[i], 0, 0, 1, 1);
		else {
			m3dLoadVector4(colors[i], 0, 1, 0, 1);

		m3dLoadVector3(vertices[i], x, y, vertOffset);


void CreateGeometry() {
	const int amount = tesselation + 2;
	M3DVector3f *vertices = (M3DVector3f*)malloc(sizeof(float) * 3 * amount);
	M3DVector4f *colors = (M3DVector4f*)malloc(sizeof(float) * 4 * amount);

	topAndBottomGeometry(vertices, colors, 0);

	circle.Begin(GL_TRIANGLE_FAN, amount);


Now, everything works fine in my GUI if the tesselation value is below or equal to the initial value (in this case 8). But if the value is any higher than 8 (doesn't matter which value), the GUI "freezes" and the circle stays the way it was like when tesselation is set to 8:


Tesselation at 8
Tesselation at 6

Edited by IsItSharp

Share this post

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!