Hi all,
I have a quick question regarding the computational costs of different methods of rendering a large set of points. Consider, for example, that you were trying to deform a solid on a per-point basis. I can think of two options for managing the deformation:
1) render each point one at a time, pushing and popping a new matrix containing the necessary translation information for each individual, pre-allocated point, or
2) calculate the new point positions, generate values locally, and then resubmit the vertex data to the gpu.
Which of these methods would ultimately yield the best performance? My gut feeling is that the second method is more likely to be "correct" however I fear that resubmitting a large number of points regularly could be bad. Are there any other methods for manipulating vertex data efficiently?
- Viewing Profile: Topics: anstmich
14 years ago on June 15th Gamedev.net was first launched! We want to thank all of you for being part of our community and hope the best years are ahead of us. Happy birthday Gamedev.net!
Community Stats
- Group Members
- Active Posts 2
- Profile Views 408
- Member Title Member
- Age Age Unknown
- Birthday Birthday Unknown
-
Gender
Not Telling
100
Neutral
User Tools
Contacts
anstmich hasn't added any contacts yet.
Topics I've Started
Rendering Efficiency: Many matrices vs. resubmitting points
16 January 2012 - 01:51 AM
OpenGL/SDL Multisampling crashes
11 June 2011 - 11:08 AM
Hi all,
I am trying to add multisampling in order to smooth out lines/polygons. From what I have read, using:
in between SDL_Init and SDL_SetVideoMode and enabling line hinting/smoothing should be enough to produce some nice antialiasing. Unfortunately, when the two lines above are added, my program segfaults on the first call to glGenBuffers(). I have glew set up to load the extensions and everything works fine without these two lines.
The two relevant methods:
init():
and
The object initialization:
returns a GLfloat array that contains 360 vertices that constitute a button shape (two separated hemispheres).
I have tried searching for other cases of this occuring, however I haven't found anything relevant. Also, excluding the calls to SDL_GL_SetAttribute() eliminates the error, however line and polygon smoothing appear to have no effect (the lines are all jagged).
Any ideas?
Thanks a lot!
Andy
I am trying to add multisampling in order to smooth out lines/polygons. From what I have read, using:
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4);
in between SDL_Init and SDL_SetVideoMode and enabling line hinting/smoothing should be enough to produce some nice antialiasing. Unfortunately, when the two lines above are added, my program segfaults on the first call to glGenBuffers(). I have glew set up to load the extensions and everything works fine without these two lines.
The two relevant methods:
init():
int init(int width, int height, bool fullscreen)
{
if(SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4);
//SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
screen = SDL_SetVideoMode(width, height, 32, fullscreen? SDL_OPENGL | SDL_FULLSCREEN : SDL_OPENGL);
// set up 2D drawing
glEnable(GL_TEXTURE_2D);
glClearColor(MAIN_BG_COLOR, MAIN_BG_COLOR, MAIN_BG_COLOR, 1.0f);
glViewport(0, 0, width, height);
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0.0f, width, height, 0.0f, -1.0f, 1.0f);
glEnable(GL_MULTISAMPLE);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST );
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST );
glEnable(GL_LINE_SMOOTH);
glEnable(GL_POLYGON_SMOOTH);
glEnable(GL_BLEND); // Enable Blending
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
GLenum err = glewInit();
WinAttributes::WIN_WIDTH = width;
WinAttributes::WIN_HEIGHT = height;
WinAttributes::V_PIX = 1.0f/double(height)*2;
WinAttributes::H_PIX = 1.0f/double(width)*2;
return err;
}
and
The object initialization:
void Button::addToScene()
{
// store the vertex data in memory
glGenBuffers(1, getVertexBuffer());
glBindBuffer(GL_ARRAY_BUFFER, *getVertexBuffer());
glBufferData(GL_ARRAY_BUFFER, getNumVertices()*sizeof(GLfloat)*3, getVertexData().get(), GL_STREAM_DRAW);
// store the color data in memory
glGenBuffers(1, getColorBuffer());
glBindBuffer(GL_ARRAY_BUFFER, *getColorBuffer());
glBufferData(GL_ARRAY_BUFFER, getNumVertices()*sizeof(GLfloat)*4, getColorData().get(), GL_STREAM_DRAW);
}
getVertexData().get() returns
returns a GLfloat array that contains 360 vertices that constitute a button shape (two separated hemispheres).
I have tried searching for other cases of this occuring, however I haven't found anything relevant. Also, excluding the calls to SDL_GL_SetAttribute() eliminates the error, however line and polygon smoothing appear to have no effect (the lines are all jagged).
Any ideas?
Thanks a lot!
Andy
- Home
- » Viewing Profile: Topics: anstmich

Find content