• Advertisement

anstmich

Member
  • Content count

    2
  • Joined

  • Last visited

Community Reputation

100 Neutral

About anstmich

  • Rank
    Newbie
  1. 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?
  2. Hi all, I am trying to add multisampling in order to smooth out lines/polygons. From what I have read, using: [code] SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1); SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4); [/code] 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(): [code] 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; } [/code] and The object initialization: [code] 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); } [/code] [code] getVertexData().get() returns [/code] 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
  • Advertisement