bool end()
	{
		glDeleteBuffers(1, &BufferName);
		glDeleteProgram(ProgramName);
		glDeleteTextures(1, &TextureName);
		glDeleteSamplers(1, &SamplerAName);
		glDeleteSamplers(1, &SamplerBName);
		glDeleteVertexArrays(1, &VertexArrayName);

		return true;
	}
示例#2
0
bool end()
{
	glDeleteBuffers(1, &BufferName);
	glDeleteProgram(ProgramName);
	glDeleteTextures(1, &TextureName);
	glDeleteSamplers(1, &SamplerAName);
	glDeleteSamplers(1, &SamplerBName);
	glDeleteVertexArrays(1, &VertexArrayName);

	return glf::checkError("end");
}
	GLTextureSamplerObject::~GLTextureSamplerObject()
	{
		if (mGLSampObj != 0)
		{
			glDeleteSamplers(1, &mGLSampObj);
		}
	}
/*-----------------------------------------------------------------------------------------------
Description:
    Cleans up GPU memory.  This might happen when the processes die, but be a good memory steward
    and clean up properly.

    Note: A big program would have the textures, program IDs, buffers, and other things 
    encapsulated somewhere, and each other those would do the cleanup, but in this barebones 
    demo, I can just clean up everything here.
Parameters: None
Returns:    None
Exception:  Safe
Creator:    John Cox (2-13-2016)
-----------------------------------------------------------------------------------------------*/
void CleanupAll()
{
    glDeleteProgram(gProgramId);

    // these deletion functions need the buffer ID, but they take a (void *) for the second 
    // argument in the event that the user has an array of IDs (legacy OpenGL stuff that isn't 
    // used much anymore, if at all), so pass in the buffer ID's address and tell it to delete 1
    // Note: The second argument is treated like an array, so if I were to pass in the address 
    // of a single GLuint and tell it to delete 2, then it will either (1) blow up or 
    // (2) silently delete something I didn't want.  Both are bad, so treat it nice.
    // Also Note: If I attempt to delete an ID that has already been deleted, that is ok.  OpenGL
    // will silently swallow that.
    glDeleteBuffers(1, &gTriangle._arrayBufferId);
    glDeleteBuffers(1, &gTriangle._elementBufferId);
    glDeleteVertexArrays(1, &gTriangle._vaoId);
    glDeleteBuffers(1, &gBox._arrayBufferId);
    glDeleteBuffers(1, &gBox._elementBufferId);
    glDeleteVertexArrays(1, &gBox._vaoId);
    glDeleteBuffers(1, &gCircle._arrayBufferId);
    glDeleteBuffers(1, &gCircle._elementBufferId);
    glDeleteVertexArrays(1, &gCircle._vaoId);

    glDeleteTextures(1, &gTexture1Id);
    glDeleteTextures(1, &gTexture2Id);
    glDeleteTextures(1, &gTexture3Id);
    glDeleteSamplers(1, &gSamplerId);

}
示例#5
0
Ground::~Ground() {
	glDeleteVertexArrays(1, &vertexArrayID);
	glDeleteBuffers(1, &hmdataVertexBufferID);
	glDeleteBuffers(1, &indexVertexBufferID);
	glDeleteTextures(1, &textureID);
	glDeleteSamplers(1, &samplerID);
}
示例#6
0
SamplerStateGL4::~SamplerStateGL4()
{
    if (samplerObject) {
        glDeleteSamplers(1, samplerObject->Data());
        POMDOG_CHECK_ERROR_GL4("glDeleteSamplers");
    }
}
示例#7
0
void GLTexture::deleteTexture(void)
{
	// Deletes the texture object from GPU memory if it ever existed.
	if(sampler != 0) glDeleteSamplers(1, &sampler);

	// Deletes the sampler object from GPU memory if it ever existed.
	if(texture != 0) glDeleteTextures(1, &texture);
}
示例#8
0
void SamplerCache::Clear()
{
	for (auto& p : m_cache)
	{
		glDeleteSamplers(1, &p.second.sampler_id);
	}
	m_cache.clear();
}
示例#9
0
void SamplerCache::Clear()
{
  for (auto& p : m_cache)
    glDeleteSamplers(1, &p.second);
  for (auto& p : m_active_samplers)
    p.second = 0;
  m_cache.clear();
}
示例#10
0
OpenGLSamplerState::~OpenGLSamplerState()
{
	if (mSamplerOGL)
	{
		glDeleteSamplers(1, &mSamplerOGL);
		mSamplerOGL = 0;
	}
}
示例#11
0
HdSimpleTextureResource::~HdSimpleTextureResource() 
{ 
    if (!_isPtex) {
        if (!glDeleteSamplers) { // GL initialization guard for headless unit test
            return;
        }
        glDeleteSamplers(1, &_sampler);
    }
}
示例#12
0
void wined3d_sampler_destroy(struct wined3d_sampler *sampler)
{
    struct wined3d_context *context = context_acquire(sampler->device, NULL);
    const struct wined3d_gl_info *gl_info = context->gl_info;

    GL_EXTCALL(glDeleteSamplers(1, &sampler->name));
    context_release(context);

    HeapFree(GetProcessHeap(), 0, sampler);
}
示例#13
0
	MeshComponent::~MeshComponent()
	{
		glDeleteVertexArrays(1, &vertexArray);
		glDeleteBuffers(1, &m_vertexBuffer);

		if(glIsTexture(meshTexture) == GL_TRUE)
			glDeleteTextures(1, &meshTexture);
		if(glIsSampler(meshSampler) == GL_TRUE)
			glDeleteSamplers(1, &meshSampler);
	}
示例#14
0
Clouds::~Clouds()
{
	glDeleteFramebuffers(1, &fourierOpacityMap_FBO[0]);
	glDeleteFramebuffers(1, &fourierOpacityMap_FBO[1]);
	glDeleteTextures(2, fourierOpacityMap_Textures[0]);
	glDeleteTextures(2, fourierOpacityMap_Textures[1]);
	glDeleteSamplers(1, &linearSampler_noMipMaps);
	glDeleteSamplers(1, &linearSampler_MipMaps);
	glDeleteVertexArrays(1, &vao_cloudParticleBuffer_Read);
	glDeleteVertexArrays(1, &vao_cloudParticleBuffer_Write);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Read[0]);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Write[0]);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Read[1]);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Write[1]);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Read[2]);
	glDeleteBuffers(1, &vbo_cloudParticleBuffer_Write[2]);
	glDeleteBuffers(1, &ibo_cloudParticleRendering);
	glDeleteBuffers(1, &noiseTexture);
}
	bool end()
	{
		glDeleteBuffers(buffer::MAX, BufferName);
		glDeleteProgram(ProgramName);
		glDeleteTextures(texture::MAX, TextureName);
		glDeleteSamplers(1, &SamplerName);
		glDeleteVertexArrays(1, &VertexArrayName);

		return this->checkError("end");
	}
示例#16
0
文件: font.cpp 项目: pavanky/forge
void font_impl::destroyGLResources()
{
    if (mIsFontLoaded) {
        if (mProgram) glDeleteProgram(mProgram);
        if (mVBO) glDeleteBuffers(1, &mVBO);
        glDeleteTextures(NUM_CHARS, mCharTextures);
    }
    if (mProgram) glDeleteProgram(mProgram);
    if (mSampler) glDeleteSamplers(1, &mSampler);
}
示例#17
0
//---------------------------------------------------------------------------//
  void TextureSamplerGL4::destroy()
  {
    if (m_uHandleGL != GLUINT_HANDLE_INVALID)
    {
      glDeleteSamplers(1u, &m_uHandleGL);
      m_uHandleGL = GLUINT_HANDLE_INVALID;

      m_properties = TextureSamplerDesc();
    }
  }
	bool end()
	{
		glDeleteSamplers(viewport::MAX, SamplerName);
		glDeleteBuffers(1, &BufferName);
		glDeleteProgram(ProgramName);
		glDeleteTextures(1, &Texture2DName);
		glDeleteVertexArrays(1, &VertexArrayName);

		return this->checkError("end");
	}
示例#19
0
CompositeFBOQuad::~CompositeFBOQuad(void)
{
	// Delete the shaders and shader program to clear up GPU memory.
	vert.deleteShader();
	frag.deleteShader();
	shaderProgram.deleteProgram();
	glDeleteVertexArrays(1, &vertexArray);
	glDeleteBuffers(2, vboHandles);
	glDeleteSamplers(1, &sampler);
}
示例#20
0
static void
hash_table_free_gl_cb(void *key, void *value, void *user_data)
{
    cg_device_t *dev = user_data;
    cg_sampler_cache_entry_t *entry = value;

    if (_cg_has_private_feature(dev, CG_PRIVATE_FEATURE_SAMPLER_OBJECTS))
        GE(dev, glDeleteSamplers(1, &entry->sampler_object));

    c_slice_free(cg_sampler_cache_entry_t, entry);
}
	bool end()
	{
		glDeleteBuffers(buffer::MAX, &BufferName[0]);
		glDeleteProgram(ProgramName);
		glDeleteTextures(texture::MAX, &TextureName[0]);
		glDeleteFramebuffers(framebuffer::MAX, &FramebufferName[0]);
		glDeleteVertexArrays(1, &VertexArrayName);
		glDeleteSamplers(1, &SamplerName);

		return true;
	}
bool end()
{
	glDeleteVertexArrays(PROGRAM_MAX, VertexArrayName);
	glDeleteBuffers(BUFFER_MAX, BufferName);
	glDeleteTextures(1, &TextureColorbufferName);
	glDeleteFramebuffers(1, &FramebufferName);
	glDeleteProgram(ProgramName[IMAGE_2D]);
	glDeleteProgram(ProgramName[LAYERING]);
	glDeleteSamplers(1, &SamplerName);

	return glf::checkError("end");
}
	bool end()
	{
		glDeleteSamplers(pipeline::MAX, &SamplerName[0]);
		glDeleteProgramPipelines(pipeline::MAX, &PipelineName[0]);
		glDeleteProgram(ProgramName[pipeline::SPLASH]);
		glDeleteProgram(ProgramName[pipeline::RENDER]);
		glDeleteFramebuffers(framebuffer::MAX, &FramebufferName[0]);
		glDeleteTextures(texture::MAX, &TextureName[0]);
		glDeleteVertexArrays(pipeline::MAX, &VertexArrayName[0]);

		return true;
	}
	bool end()
	{
		glDeleteTextures(texture::MAX, &TextureName[0]);
		glDeleteFramebuffers(1, &FramebufferName);
		glDeleteProgram(ProgramName[program::BLIT]);
		glDeleteProgram(ProgramName[program::UPDATE]);
		glDeleteVertexArrays(1, &VertexArrayName);
		glDeleteSamplers(1, &SamplerName);
		glDeleteProgramPipelines(pipeline::MAX, &PipelineName[0]);

		return true;
	}
示例#25
0
文件: sampler.c 项目: m1nuz/neon-core
extern void
free_sampler(SAMPLER *sampler) {
    assert(sampler != NULL);

#ifndef GL_ES_VERSION_2_0
    if(glIsSampler(sampler->id))
        glDeleteSamplers(1, &sampler->id);
#endif // NO GL_ES_VERSION_2_0

    sampler->id = 0;
    sampler->usage = 0;
}
	bool end()
	{
		glDeleteVertexArrays(PIPELINE_MAX, VertexArrayName);
		glDeleteBuffers(BUFFER_MAX, BufferName);
		glDeleteTextures(1, &TextureColorbufferName);
		glDeleteFramebuffers(1, &FramebufferName);
		glDeleteProgram(ProgramName[VIEWPORT]);
		glDeleteProgram(ProgramName[LAYERING]);
		glDeleteSamplers(1, &SamplerName);

		return true;
	}
示例#27
0
PIGLIT_GL_TEST_CONFIG_END

enum piglit_result
piglit_display(void)
{
	bool pass = true;
	GLuint tex, sampler, fb;
	const float tex_data[16] = {0, 1, 0, 0,
				    1, 0, 0, 0,
				    1, 0, 0, 0,
				    1, 0, 0, 0};
	const float *green = tex_data;

	glClearColor(0, 0, 1, 0);
	glClear(GL_COLOR_BUFFER_BIT);

	glGenTextures(1, &tex);
	glBindTexture(GL_TEXTURE_2D, tex);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, 2, 2, 0,
		     GL_RGBA, GL_FLOAT, tex_data);

	glGenFramebuffers(1, &fb);
	glBindFramebuffer(GL_FRAMEBUFFER, fb);

	glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT,
				  GL_COLOR_ATTACHMENT0_EXT,
				  GL_TEXTURE_2D,
				  tex,
				  0);
	assert(glGetError() == 0);

	glGenSamplers(1, &sampler);
	glSamplerParameteri(sampler, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
	glSamplerParameteri(sampler, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
	glBindSampler(0, sampler);

	glBindFramebuffer(GL_READ_FRAMEBUFFER, fb);
	glBindFramebuffer(GL_DRAW_FRAMEBUFFER, piglit_winsys_fbo);
	glBlitFramebuffer(0, 0, 1, 1,
			  0, 0, piglit_width, piglit_height,
			  GL_COLOR_BUFFER_BIT, GL_NEAREST);

	glBindFramebuffer(GL_FRAMEBUFFER, piglit_winsys_fbo);
	pass = piglit_probe_rect_rgba(0, 0, piglit_width, piglit_height, green);
	piglit_present_results();

	glDeleteSamplers(1, &sampler);
	glDeleteTextures(1, &tex);
	glDeleteFramebuffers(1, &fb);

	return pass ? PIGLIT_PASS : PIGLIT_FAIL;
}
	bool end()
	{
		bool Validated(true);

		glDeleteProgramPipelines(pipeline::MAX, &PipelineName[0]);
		glDeleteProgram(ProgramName[pipeline::SPLASH]);
		glDeleteBuffers(buffer::MAX, BufferName);
		glDeleteSamplers(1, &SamplerName);
		glDeleteTextures(texture::MAX, &TextureName[0]);
		glDeleteVertexArrays(1, &VertexArrayName);

		return Validated;
	}
bool end()
{
	glDeleteProgramPipelines(program::MAX, PipelineName);
	glDeleteBuffers(buffer::MAX, BufferName);
	glDeleteSamplers(1, &SamplerName);
	glDeleteTextures(texture::MAX, TextureName);
	glDeleteFramebuffers(1, &FramebufferName);
	glDeleteVertexArrays(1, &VertexArrayName);
	for(int i = 0; i < program::MAX; ++i)
		glDeleteProgram(ProgramName[i]);

	return true;
}
	bool end()
	{
		glDeleteBuffers(1, &BufferName);
		for(int i = 0; i < program::MAX; ++i)
			glDeleteProgram(ProgramName[i]);
		glDeleteSamplers(1, &SamplerName);
		glDeleteTextures(renderbuffer::MAX, RenderbufferName);
		glDeleteTextures(texture::MAX, TextureName);
		glDeleteFramebuffers(1, &FramebufferName);
		glDeleteVertexArrays(1, &VertexArrayName);

		return this->checkError("end");
	}