コード例 #1
0
ファイル: brush.c プロジェクト: johnh530/electro
void fini_brush(int i)
{
    struct brush *b = get_brush(i);

    if (b->state == 1)
    {
        /* Finalize any vertex and fragment shader objects. */

        if (GL_has_shader_objects)
        {
            if (b->shad_prog) glDeleteObjectARB(b->shad_prog);
            if (b->vert_shad) glDeleteObjectARB(b->vert_shad);
            if (b->frag_shad) glDeleteObjectARB(b->frag_shad);
        }
                
        /* Finalize any vertex and fragment programs. */

        if (GL_has_vertex_program)
            if (glIsProgramARB(b->vert_prog))
                glDeleteProgramsARB(1, &b->vert_prog);

        if (GL_has_fragment_program)
            if (glIsProgramARB(b->frag_prog))
                glDeleteProgramsARB(1, &b->frag_prog);
                
        b->vert_shad = 0;
        b->frag_shad = 0;
        b->shad_prog = 0;

        b->vert_prog = 0;
        b->frag_prog = 0;
        b->state     = 0;
    }
}
コード例 #2
0
void ARBDepthFillProgram::destroy()
{
    glDeleteProgramsARB(1, &m_vertex_program);
    glDeleteProgramsARB(1, &m_fragment_program);

    GlobalOpenGL().assertNoErrors();
}
コード例 #3
0
ファイル: arbfvp.c プロジェクト: jckarter/Trixel
static void
arbfvp_delete_shaders(trixel_state t)
{
    struct arbfvp_shaders * shaders = ARBFVP(t);
    if(shaders) {
        glDeleteProgramsARB(1, &shaders->vertex_program);
        glDeleteProgramsARB(1, &shaders->fragment_program);
        free(shaders);
    }
}
コード例 #4
0
void PixelShaderCache::Shutdown()
{
	glDeleteProgramsARB(1, &s_ColorMatrixProgram);
	s_ColorMatrixProgram = 0;
    glDeleteProgramsARB(1, &s_DepthMatrixProgram);
	s_DepthMatrixProgram = 0;
	PSCache::iterator iter = PixelShaders.begin();
	for (; iter != PixelShaders.end(); iter++)
		iter->second.Destroy();
	PixelShaders.clear();
}
コード例 #5
0
void ATITShader::kill()
{
   glDeleteProgramsARB(1, &mVertexProgram);
   glDeleteProgramsARB(1, &mFragmentProgram);
   for(U32 i = 0; i < mParameters.size(); i++)
   {
      delete mParameters[i];
   }
   mParameters.clear();
   dFree(mPixelSourceString);
   dFree(mVertexSourceString);
}
コード例 #6
0
ファイル: shader.cpp プロジェクト: 4DA/Unigine-legacy
Shader::~Shader() {
	if(vertex_target == GL_VERTEX_PROGRAM_ARB) {
		if(vertex_id) glDeleteProgramsARB(1,&vertex_id);
	}
	if(fragment_target == GL_FRAGMENT_PROGRAM_ARB) {
		if(fragment_id) glDeleteProgramsARB(1,&fragment_id);
	} else if(fragment_target == GL_FRAGMENT_PROGRAM_NV) {
		if(fragment_id) glDeleteProgramsNV(1,&fragment_id);
	} else if(fragment_target == GL_COMBINE) {
		glDeleteLists(fragment_id,1);
	}
}
コード例 #7
0
ModelDrawer::~ModelDrawer ()
{	
	if (s3oFP) glDeleteProgramsARB( 1, &s3oFP );
	if (s3oVP) glDeleteProgramsARB( 1, &s3oVP );
	if (s3oFPunlit) glDeleteProgramsARB( 1, &s3oFPunlit );
	if (s3oVPunlit) glDeleteProgramsARB( 1, &s3oVPunlit );
	
	if (skyboxTexture)
		glDeleteTextures(1,&skyboxTexture);

	if (sphereList)
		glDeleteLists (sphereList,1);
}
コード例 #8
0
void 
CFrameBufferObject::freeResources()
{
    if (m_fboData.fb)           glDeleteFramebuffersEXT( 1, &m_fboData.fb);
    if (m_fboData.resolveFB)    glDeleteFramebuffersEXT( 1, &m_fboData.resolveFB);
    if (m_fboData.colorRB)      glDeleteRenderbuffersEXT( 1, &m_fboData.colorRB);
    if (m_fboData.depthRB)      glDeleteRenderbuffersEXT( 1, &m_fboData.depthRB);
    if (m_fboData.colorTex)     glDeleteTextures( 1, &m_fboData.colorTex);
    if (m_fboData.depthTex)     glDeleteTextures( 1, &m_fboData.depthTex);

    glDeleteProgramsARB(1, &m_textureProgram);
    glDeleteProgramsARB(1, &m_overlayProgram);
}
コード例 #9
0
ファイル: arbgpuprog.c プロジェクト: Distrotech/mesa-demos
static void Key( unsigned char key, int x, int y )
{
   (void) x;
   (void) y;
   switch (key) {
      case 27:
         glDeleteProgramsARB(1, &VertProg);
         glDeleteProgramsARB(1, &FragProg);
         glutDestroyWindow(Win);
         exit(0);
         break;
   }
   glutPostRedisplay();
}
コード例 #10
0
ファイル: boxFilter.cpp プロジェクト: Aahung/CudaSample
void cleanup()
{
    sdkDeleteTimer(&timer);
    sdkDeleteTimer(&kernel_timer);

    if (h_img)
    {
        free(h_img);
        h_img=NULL;
    }

    if (d_img)
    {
        cudaFree(d_img);
        d_img=NULL;
    }

    if (d_temp)
    {
        cudaFree(d_temp);
        d_temp=NULL;
    }

    // Refer to boxFilter_kernel.cu for implementation
    freeTextures();

    cudaGraphicsUnregisterResource(cuda_pbo_resource);

    glDeleteBuffersARB(1, &pbo);
    glDeleteTextures(1, &texid);
    glDeleteProgramsARB(1, &shader);
}
コード例 #11
0
CAdvWater::~CAdvWater()
{
	glDeleteTextures (1, &reflectTexture);
	glDeleteTextures (1, &bumpTexture);
	glDeleteTextures (4, rawBumpTexture);
	glDeleteProgramsARB( 1, &waterFP );
}
コード例 #12
0
ファイル: ResourceManager.cpp プロジェクト: DimondTheCat/xray
void ResourceManager::recover() 
{
	if (sTextureList.size())
		glDeleteTextures( (GLsizei) sTextureList.size(), &(*sTextureList.begin()));

	if (sAsmProgramList.size())
		glDeleteProgramsARB( (GLsizei) sAsmProgramList.size(), &(*sAsmProgramList.begin()));


	for (std::vector<GLuint>::iterator it=sProgramList.begin(); it<sProgramList.end(); it++) {
		glDeleteObject( *it); 
	}
	{
		for (std::vector<GLuint>::iterator it=sShaderList.begin(); it<sShaderList.end(); it++) {
			glDeleteObject( *it); 
		}
	}

	sTextureList.clear();
	sAsmProgramList.clear();
	sProgramList.clear();
	sShaderList.clear();
	
	GL_CHECK;
}
コード例 #13
0
PaletteRenderer::DataItem::~DataItem(void)
	{
	if(renderingPath==FragmentProgram)
		glDeleteProgramsARB(1,&fragmentProgramId);
	if(renderingPath==FragmentProgram||renderingPath==TextureShader)
		glDeleteTextures(1,&paletteTextureObjectId);
	}
コード例 #14
0
ファイル: myGL.cpp プロジェクト: lordelven/spring
void glSafeDeleteProgram(GLuint program)
{
	if (!GLEW_ARB_vertex_program || (program == 0)) {
		return;
	}
	glDeleteProgramsARB(1, &program);
}
コード例 #15
0
/**
 * The GL_ARB_fragment_shader spec, issue 23 says:
 *   (23) What is the result of a sample from an incomplete texture? 
 *   The definition of texture completeness can be found in section 3.8.9 
 *   of the core GL spec. 
 *
 *   RESOLVED: The result of a sample from an incomplete texture is the 
 *   constant vector (0,0,0,1).
 *
 * In this test we swizzle RGBA->ABGR so we don't need to worry if the
 * framebuffer has an alpha channel.
 */
GLboolean
test_arb_fp(void)
{
	static const char *fragProgramText =
		"!!ARBfp1.0\n"
		"TEMP t1;\n"
		"TEX t1, fragment.texcoord[0], texture[0], 2D;\n"
		"MOV result.color, t1.abgr;\n"
		"END\n";
	static const GLfloat expected[4] = { 1.0, 0.0, 0.0, 0.0 };
	int pos = 1;
	GLboolean p;
	GLuint prog;

	glGenProgramsARB(1, &prog);
	glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prog);
	glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB,
			   GL_PROGRAM_FORMAT_ASCII_ARB,
			   strlen(fragProgramText),
			   (const GLubyte *) fragProgramText);

	glEnable(GL_FRAGMENT_PROGRAM_ARB);

	glColor3f(0, 1, 0);
	draw_rect(1);

	glDisable(GL_FRAGMENT_PROGRAM_ARB);
	glDeleteProgramsARB(1, &prog);

	p = probe_pos(pos, expected);
	if (!p)
		printf("  Testing ARB fragment program\n");
	return p;
}
コード例 #16
0
GLuint HCoreLoadFragmentProgramOpenGL_ASM(const char *filename)
{
	char filename_fullpath[256];
	sprintf(filename_fullpath, "%s%s", HCoreGetShaderPath(), filename);

	unsigned int size = 0;

	unsigned char *buffer = (unsigned char *) HCoreLoadBinaryStream(filename_fullpath, &size);
	if ( buffer==NULL )
	{
		return 0;
	}

	GLuint shader_id = 0;

	glGenProgramsARB(1, &shader_id);
    glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, shader_id );
	glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, size, buffer);
	if ( GL_INVALID_OPERATION == glGetError() )
	{
		GLint errPos;
		glGetIntegerv( GL_PROGRAM_ERROR_POSITION_ARB, &errPos );

		GLubyte *errString = (GLubyte *) glGetString(GL_PROGRAM_ERROR_STRING_ARB);
		fprintf( stderr, "error at position: %d\n%s\n", errPos, errString );
		glDeleteProgramsARB(1, &shader_id);
		shader_id = 0;
	}

	HCoreReleaseBinaryStream(buffer);

	return shader_id;
}
コード例 #17
0
ファイル: arbfvp.c プロジェクト: jckarter/Trixel
static GLuint
_arb_program_from_string(GLenum kind, int shader_flags, char const * source, size_t source_length, char * * out_error_message)
{
    GLuint program;
    glGenProgramsARB(1, &program);
    glBindProgramARB(kind, program);
    glProgramStringARB(kind, GL_PROGRAM_FORMAT_ASCII_ARB, source_length, source);

    GLint error_position;
    glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &error_position);
    if(error_position >= 0) {
        const GLubyte * error_string = glGetString(GL_PROGRAM_ERROR_STRING_ARB);
        asprintf(out_error_message, "Error in program at position %d: %s", error_position, error_string);
        goto error;
    }

    glBindProgramARB(kind, 0);

    return program;

error:
    glBindProgramARB(kind, 0);
    glDeleteProgramsARB(1, &program);
    return 0;
}
コード例 #18
0
void cleanup()
{
    sdkDeleteTimer(&timer);
    sdkDeleteTimer(&kernel_timer);

    if (hImage)
    {
        free(hImage);
    }

    freeTextures();

    //DEPRECATED: checkCudaErrors(cudaGLUnregisterBufferObject(pbo));
    cudaGraphicsUnregisterResource(cuda_pbo_resource);

    glDeleteBuffersARB(1, &pbo);
    glDeleteTextures(1, &texid);
    glDeleteProgramsARB(1, &shader);

    // cudaDeviceReset causes the driver to clean up all state. While
    // not mandatory in normal operation, it is good practice.  It is also
    // needed to ensure correct operation when the application is being
    // profiled. Calling cudaDeviceReset causes all profile data to be
    // flushed before the application exits
    cudaDeviceReset();
}
コード例 #19
0
ファイル: boxFilter.cpp プロジェクト: yyzreal/gpuocelot
void cleanup()
{
    cutilCheckError( cutDeleteTimer( timer));
    if(h_img)cutFree(h_img);
    cutilSafeCall(cudaFree(d_img));
    cutilSafeCall(cudaFree(d_temp));

    // Refer to boxFilter_kernel.cu for implementation
    freeTextures();

    //DEPRECATED: cutilSafeCall(cudaGLUnregisterBufferObject(pbo));
    cudaGraphicsUnregisterResource(cuda_pbo_resource);

    glDeleteBuffersARB(1, &pbo);
    glDeleteTextures(1, &texid);
    glDeleteProgramsARB(1, &shader);

    if (g_CheckRender) {
        delete g_CheckRender;
        g_CheckRender = NULL;
    }
    if (g_FrameBufferObject) {
        delete g_FrameBufferObject;
        g_FrameBufferObject = NULL;
    }
}
コード例 #20
0
enum piglit_result
piglit_display(void)
{
	static const char *fp_source =
		"!!ARBfp1.0\n"
		"TEX result.color, fragment.texcoord[0], texture[1], 2D;\n"
		"END\n";
	bool pass = true;
	GLuint tex;
	GLuint prog;

	texrect_w = piglit_width / 4 / 2;
	texrect_h = piglit_height / 2;

	glGenProgramsARB(1, &prog);
	glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB, prog);
	glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB,
			   GL_PROGRAM_FORMAT_ASCII_ARB,
			   strlen(fp_source),
			   (const GLubyte *) fp_source);

	glEnable(GL_FRAGMENT_PROGRAM_ARB);

	glActiveTexture(GL_TEXTURE1);
	tex = piglit_rgbw_texture(GL_RGBA, 2, 2, false, false,
				  GL_UNSIGNED_NORMALIZED);

	/* Given that the failure mode we had that led to this test
	 * being written was that the sampler state read was
	 * pseudo-random, go through several statechanges on the
	 * sampler to make sure we're reliably getting our sampler
	 * state.
	 */
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	piglit_draw_rect_tex(-1, -1, 0.5, 2,
			     0, 0, 1, 1);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	piglit_draw_rect_tex(-0.5, -1, 0.5, 2,
			     0, 0, 1, 1);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
	piglit_draw_rect_tex(0, -1, 0.5, 2,
			     0, 0, 1, 1);
	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	piglit_draw_rect_tex(0.5, -1, 0.5, 2,
			     0, 0, 1, 1);

	pass = pass && test_nearest(piglit_width * 0 / 4);
	pass = pass && test_linear(piglit_width * 1 / 4);
	pass = pass && test_nearest(piglit_width * 2 / 4);
	pass = pass && test_linear(piglit_width * 3 / 4);

	piglit_present_results();

	glDeleteTextures(1, &tex);
	glDisable(GL_FRAGMENT_PROGRAM_ARB);
	glDeleteProgramsARB(1, &prog);

	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
}
コード例 #21
0
ファイル: VertexProgram.cpp プロジェクト: ak4hige/myway3d
CVertexProgram::~CVertexProgram( )
{
    if (m_uiProgram)
    {
        glDeleteProgramsARB(1, &m_uiProgram);
        m_uiProgram = 0;
    }
}
コード例 #22
0
ファイル: Program.cpp プロジェクト: Pocsel/pocsel
 Program::~Program()
 {
     if (glLinkProgram != nullptr)
         GLCHECK(glDeleteProgram(this->_program));
     else if (glLinkProgramARB != nullptr)
         GLCHECK(glDeleteProgramsARB(1, &this->_program));
     else
         throw std::runtime_error("glDeleteProgram unsupported");
 }
コード例 #23
0
static void set_blur_width(float w) {
    static GLfloat blur_width = -1 ;
    if(!glut_viewer_is_enabled(GLUT_VIEWER_HDR)) { return ; }
    if(blur_width == w) { return ; }
	
    blur_width = w ;
    int blur_w = the_framebuffer_shrink.width ;
    int blur_h = the_framebuffer_shrink.height ;

    // delete old programs
    if (blurh_fprog != 0) { glDeleteProgramsARB(1, &blurh_fprog); }
    if (blurv_fprog != 0) { glDeleteProgramsARB(1, &blurv_fprog); }

    unsigned char* blur_code = generateBlurCodeARBfp(blur_width, false, true, blur_w, blur_h) ;
    blurh_fprog = loadProgramARB(GL_FRAGMENT_PROGRAM_ARB, blur_code) ;
    blur_code = generateBlurCodeARBfp(blur_width, true, true, blur_w, blur_h);
    blurv_fprog = loadProgramARB(GL_FRAGMENT_PROGRAM_ARB, blur_code);
}
コード例 #24
0
ファイル: viewer.cpp プロジェクト: bsmr-opengl/cal3d
void Viewer::onShutdown()
{
  delete m_calHardwareModel;
  delete m_calModel;
  delete m_calCoreModel;

  glDeleteProgramsARB(1, &m_vertexProgramId);
  glDeleteBuffersARB(6, m_bufferObject);

}
コード例 #25
0
ファイル: shaderbase.cpp プロジェクト: anqanq000/vvv
void deleteprog(int progid)
   {
#if defined(GL_ARB_vertex_program) && defined(GL_ARB_fragment_program)
   if (progid!=0)
      {
      GLuint id=progid;
      glDeleteProgramsARB(1,&id);
      }
#endif
   }
コード例 #26
0
ファイル: GPUProgram.cpp プロジェクト: luaman/g3d-cpp
void GPUProgram::deletePrograms(int num, unsigned int* id) const {

    switch (extension) {
    case NVIDIA:
        glDeleteProgramsNV(num, id);
        break;

    case ARB:
        glDeleteProgramsARB(num, id);
        break;
    }
}
コード例 #27
0
ファイル: ImageGL.cpp プロジェクト: KHeresy/openvr
ImageGL::~ImageGL()
{
    int nFrames = bVsync_ ? 3 : 1;

    for (int n=0; n < nFrames; n++)
    {
        unregisterAsCudaResource(n);
    }

    glDeleteBuffersARB(nFrames, gl_pbo_);
    glDeleteTextures(nFrames, gl_texid_);
    glDeleteProgramsARB(1, &gl_shader_);
}
コード例 #28
0
void cleanup()
{
    cutilCheckError( cutDeleteTimer( hTimer));

    glDeleteProgramsARB(1, &shader);

    if (g_CheckRender) {
        delete g_CheckRender; g_CheckRender = NULL;
    }
    if (g_FrameBufferObject) {
        delete g_FrameBufferObject; g_FrameBufferObject = NULL;
    }
}
コード例 #29
0
ファイル: bicubicTexture.cpp プロジェクト: chengli1986/571e
void cleanup()
{
    freeTexture();
    checkCudaErrors(cudaGraphicsUnregisterResource(cuda_pbo_resource));

    glDeleteBuffersARB(1, &pbo);

#if USE_BUFFER_TEX
    glDeleteTextures(1, &bufferTex);
    glDeleteProgramsARB(1, &fprog);
#else
    glDeleteTextures(1, &displayTex);
#endif
}
コード例 #30
0
void cleanup()
{
    free(h_Src);
    checkCudaErrors(CUDA_FreeArray());
    checkCudaErrors(cudaGraphicsUnregisterResource(cuda_pbo_resource));

    glDeleteProgramsARB(1, &shader);

    sdkDeleteTimer(&timer);

    // cudaDeviceReset causes the driver to clean up all state. While
    // not mandatory in normal operation, it is good practice.  It is also
    // needed to ensure correct operation when the application is being
    // profiled. Calling cudaDeviceReset causes all profile data to be
    // flushed before the application exits
    cudaDeviceReset();
}