void vbo_draw(void)
{
  if(vertex_buffer_count)
  {
    vbo_bind();
    vbo_buffer_data(&vertex_buffer[0], VERTEX_SIZE * vertex_buffer_count);
    glDrawArrays(vertex_draw_mode,0,vertex_buffer_count);
    vertex_buffer_count = 0;
    vbo_unbind();
  }
}
void vbo_enable()
{
  if(vertex_buffer_enabled)
    return;

  vbo_bind();
  glEnableVertexAttribArray(POSITION_ATTR);
  glVertexAttribPointer(POSITION_ATTR, 4, GL_FLOAT, false, VERTEX_SIZE, (GLvoid *) offsetof(VERTEX, x)); //Position

  glEnableVertexAttribArray(COLOUR_ATTR);
  glVertexAttribPointer(COLOUR_ATTR, 4, GL_UNSIGNED_BYTE, true, VERTEX_SIZE, (GLvoid *) offsetof(VERTEX, b)); //Colour

  glEnableVertexAttribArray(TEXCOORD_0_ATTR);
  glVertexAttribPointer(TEXCOORD_0_ATTR, 2, GL_FLOAT, false, VERTEX_SIZE, (GLvoid *) offsetof(VERTEX, coord[2])); //Tex0

  glEnableVertexAttribArray(TEXCOORD_1_ATTR);
  glVertexAttribPointer(TEXCOORD_1_ATTR, 2, GL_FLOAT, false, VERTEX_SIZE, (GLvoid *) offsetof(VERTEX, coord[0])); //Tex1

  glEnableVertexAttribArray(FOG_ATTR);
  glVertexAttribPointer(FOG_ATTR, 1, GL_FLOAT, false, VERTEX_SIZE, (GLvoid *) offsetof(VERTEX, f)); //Fog
  vbo_unbind();
}
Exemple #3
0
void display()
{
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glLoadIdentity();

	glPointSize(10.0f);

	/* glTranslatef(0.0f,0.0f,-4.0f); */
	/* glColor3f(0.0f,0.0f,1.0f); */

	/* glBegin(GL_POINTS); */
	/* 	glVertex2fv(shooter.pos); */
	/* glEnd(); */
	
	use(shader);
	vbo_bind(vbo);

	/* glPointSize(4.0); */

	/* glBufferData(GL_ARRAY_BUFFER, sizeof(shooter.pos), shooter.pos, GL_DYNAMIC_DRAW); */

	glEnableVertexAttribArray(shader.attrib[0]);
	glVertexAttribPointer(shader.attrib[0], 2, GL_FLOAT, GL_FALSE, 0, 0);

	glDrawArrays(GL_POINTS,0,1);

	/* int size; */
	/* glGetBufferParameteriv(GL_ELEMENT_ARRAY_BUFFER, GL_BUFFER_SIZE, &size); */

	/* glDrawElements(GL_POINTS, size/sizeof(GLuint), GL_UNSIGNED_SHORT, 0); */
	
	glDisableVertexAttribArray(shader.attrib[0]);
	vbo_unbind();
	
	glutSwapBuffers();
}