예제 #1
0
파일: pbo.c 프로젝트: chemecse/piglit
enum piglit_result
test_sanity(void *null)
{
	GLuint pbs[1];
	GLuint pb_binding;

	glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING_ARB,
		      (GLint *) & pb_binding);
	if (pb_binding != 0) {
		REPORT_FAILURE("Failed to bind unpack pixel buffer object");
		return PIGLIT_FAIL;
	}

	glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING_ARB,
		      (GLint *) & pb_binding);
	if (pb_binding != 0) {
		REPORT_FAILURE("Failed to bind pack pixel buffer object");
		return PIGLIT_FAIL;
	}

	glGenBuffersARB(1, pbs);

	if (glIsBufferARB(pbs[0]) != GL_FALSE) {
		REPORT_FAILURE("glIsBufferARB failed");
		return PIGLIT_FAIL;
	}

	glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, pbs[0]);
	glGetIntegerv(GL_PIXEL_UNPACK_BUFFER_BINDING_ARB,
		      (GLint *) & pb_binding);
	glBindBufferARB(GL_PIXEL_UNPACK_BUFFER_ARB, 0);
	if (pb_binding != pbs[0]) {
		REPORT_FAILURE("Failed to bind unpack pixel buffer object");
		return PIGLIT_FAIL;
	}

	glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, pbs[0]);
	glGetIntegerv(GL_PIXEL_PACK_BUFFER_BINDING_ARB,
		      (GLint *) & pb_binding);
	glBindBufferARB(GL_PIXEL_PACK_BUFFER_ARB, 0);
	if (pb_binding != pbs[0]) {
		REPORT_FAILURE("Failed to bind unpack pixel buffer object");
		return PIGLIT_FAIL;
	}

	glDeleteBuffersARB(1, pbs);

	if (glIsBufferARB(pbs[0]) == GL_TRUE) {
		REPORT_FAILURE("glIsBufferARB failed");
		return PIGLIT_FAIL;
	}

	return PIGLIT_PASS;
}
예제 #2
0
// Zrusi pole
void mesh_vertex_array_zrus_arb(GAME_MESH_OLD * p_mesh)
{
  VERTEX_ARRAYS *p_varray = &p_mesh->varray;

  if (glIsBufferARB(p_varray->ati_handle)) {
    glDeleteBuffersARB(1, (GLuint *) & p_varray->ati_handle);
    p_varray->ati_handle = 0;
  }

  if (glIsBufferARB(p_varray->arb_handle_indicie)) {
    glDeleteBuffersARB(1, (GLuint *) & p_varray->arb_handle_indicie);
    p_varray->arb_handle_indicie = 0;
  }
}
예제 #3
0
파일: fge_mesh.c 프로젝트: ILeonor/FGE
void
fge_mesh_render(struct fge_mesh mesh, struct fge_glsl *prog, void (*prog_exec)(struct fge_glsl *prog, struct fge_mesh *mesh))
{
	int32	stride;

	stride	= sizeof(struct fge_vertex);

	if ((!glIsBufferARB(mesh.vertex_buffer)) || (!glIsBufferARB(mesh.index_buffer))){
		return;
	}

	glPushAttrib(GL_ALL_ATTRIB_BITS);
	glPushClientAttrib(GL_CLIENT_ALL_ATTRIB_BITS);

	glEnableClientState(GL_VERTEX_ARRAY);
	glBindBufferARB(GL_ARRAY_BUFFER_ARB, mesh.vertex_buffer);
	
	glVertexPointer(3, GL_FLOAT, stride, (void *)0);

	glEnableClientState(GL_NORMAL_ARRAY);
	glNormalPointer(GL_FLOAT, stride, (void*)off_sets[FGE_OFFSET_N]);

	glClientActiveTextureARB(GL_TEXTURE0_ARB);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
	glTexCoordPointer(2, GL_FLOAT, stride, (void*)off_sets[FGE_OFFSET_TEX]);

	glClientActiveTextureARB(GL_TEXTURE1_ARB);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
	glTexCoordPointer(3, GL_FLOAT, stride, (void*)off_sets[FGE_OFFSET_T]);

	glClientActiveTextureARB(GL_TEXTURE2_ARB);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
	glTexCoordPointer(3, GL_FLOAT, stride, (void*)off_sets[FGE_OFFSET_B]);

	if (prog_exec != NULL){
		prog_exec(prog, &mesh);
	}
	
	glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, mesh.index_buffer);

	glDrawElements(GL_TRIANGLES, 3 * mesh.count_faces, GL_UNSIGNED_INT, 0);

	glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
	glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);

	glPopAttrib();
	glPopClientAttrib();
}
예제 #4
0
void initVBO()
{
	//g_fVBOSupported = IsExtensionSupported( "GL_ARB_vertex_buffer_object" );
	if(GLEE_ARB_vertex_buffer_object)
	{   
        g_fVBOSupported = 1;
        
        int i;
        for (i = 0; i < LAYERS; i++)
        {

            glGenBuffersARB(1, &vboId_vertex[i]); 
            if (glIsBufferARB(vboId_vertex[i]))
            {
            }
            else
            {
                fprintf(stderr, "failed to create buffer, err: %i\n",  glGetError()); 
            }
            
            glGenBuffersARB(1, &vboId_texture[i]); 
            if (glIsBufferARB(vboId_texture[i]))
            {
            }
            else
            {
                fprintf(stderr, "failed to create buffer, err: %i\n",  glGetError()); 
            }
            
            glGenBuffersARB(1, &vboId_color[i]); 
            if (glIsBufferARB(vboId_vertex[i]))
            {
            }
            else
            {
                fprintf(stderr, "failed to create buffer, err: %i\n",  glGetError()); 
            }
            
        }
	}
    else
    {
        fprintf(stderr, "Warning, VBOs not supported!\n");
    }
   
}
예제 #5
0
// Zruseni
void poly_vertex_array_zrus_arb(EDIT_MESH_POLY * p_poly)
{
  VERTEX_ARRAYS *p_va = &p_poly->varray;

  if (glIsBufferARB(p_va->ati_handle)) {
    glDeleteBuffersARB(1, (GLuint *) & p_va->ati_handle);
    p_va->ati_handle = 0;
  }
}
예제 #6
0
void RendererGL::deleteBuffers()
{
	if(!isExtSupported(XGL_ARB_vertex_buffer_object))
		return;

	for (unsigned int id = 1; id < m_maxBufferID; ++id)
	{
		if( glIsBufferARB(id) )
			glDeleteBuffersARB( 1, &id );
	}
}
예제 #7
0
파일: object.c 프로젝트: johnh530/electro
static void fini_object(int i)
{
    struct object *o = get_object(i);

    if (o->state == 1)
    {
        /* Free the vertex buffer object. */

        if (GL_has_vertex_buffer_object)
            if (glIsBufferARB(o->buffer))
                glDeleteBuffersARB(1, &o->buffer);

        o->buffer = 0;
        o->state  = 0;
    }
}
예제 #8
0
                PixelBuffer::PixelBuffer ( std::string name )
                {
                        name_ = name;
                        // TODO Is the context created ?

                        Celer::OpenGL::OpenGLContext::instance( )->glewInitialize( name_ );

                        if ( !glewIsSupported ( "GL_ARB_vertex_buffer_object" ) )
                        {
                                std::cerr << "ERROR: Support for  GL_VERSION_2_0 GL_ARB_pixel_buffer_object OpenGL extensions missing." << std::endl;
                        }
                        else
                        {
                                glGenBuffersARB ( 1 , &id_ );

                                ok_ = ( glIsBufferARB ( id_ ) == GL_TRUE );
                                target_ = 0;
                                bound_ = false;
                        }

                }
예제 #9
0
파일: galaxy.c 프로젝트: johnh530/electro
static void fini_galaxy(int i)
{
    struct galaxy *g = get_galaxy(i);

    if (g->state == 1)
    {
        /* Free the star texture. */

        if (glIsTexture(g->texture))
            glDeleteTextures(1, &g->texture);

        /* Free the vertex buffer object. */

        if (GL_has_vertex_buffer_object)
            if (glIsBufferARB(g->buffer))
                glDeleteBuffersARB(1, &g->buffer);

        g->texture = 0;
        g->buffer  = 0;
        g->state   = 0;
    }
}
예제 #10
0
파일: Mesh.cpp 프로젝트: newincpp/kaboom
newin::Mesh::~Mesh() {
    if(glIsBufferARB(_vboID)) {
	glDeleteBuffersARB(1, &_vboID);
    }
    delete _verts;
}
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_ARBBufferObject_nglIsBufferARB(JNIEnv *env, jclass clazz, jint buffer, jlong function_pointer) {
	glIsBufferARBPROC glIsBufferARB = (glIsBufferARBPROC)((intptr_t)function_pointer);
	GLboolean __result = glIsBufferARB(buffer);
	return __result;
}