Beispiel #1
0
static void
SW_DestroyRenderer(SDL_Renderer * renderer)
{
    SW_RenderData *data = (SW_RenderData *) renderer->driverdata;
    SDL_Window *window = SDL_GetWindowFromID(renderer->window);
    SDL_VideoDisplay *display = SDL_GetDisplayFromWindow(window);
    int i;

    if (data) {
        for (i = 0; i < SDL_arraysize(data->texture); ++i) {
            if (data->texture[i]) {
                DestroyTexture(data->renderer, data->texture[i]);
            }
        }
        if (data->surface.format) {
            SDL_SetSurfacePalette(&data->surface, NULL);
            SDL_FreeFormat(data->surface.format);
        }
        if (display->palette) {
            SDL_DelPaletteWatch(display->palette, DisplayPaletteChanged,
                                data);
        }
        if (data->renderer) {
            data->renderer->DestroyRenderer(data->renderer);
        }
        SDL_FreeDirtyRects(&data->dirty);
        SDL_free(data);
    }
    SDL_free(renderer);
}
Beispiel #2
0
void DestroyGPUGeometry( struct GPUGeometry * g )
{
	int i;
	for( i = 1; i < g->vertexcount; i++ )
	{
		free( g->names[i] );
	}
	free( g->names );

	if( g->uniquedata )
	{
		DestroyIndexData( g->indices );
		for( i = 0; i < g->vertexcount; i++ )
		{
			DestroyVertexData( g->vertexdatas[i] );
		}
	}

	for( i = 0; i < MAX_TEXTURES; i++ )
	{
		if( g->todelete[i] && g->textures[i] )
		{
			DestroyTexture( g->textures[i] );
		}
	}

	free( g );
}
MovieTexture_FFMpeg::~MovieTexture_FFMpeg()
{
	StopThread();
	DestroyDecoder();
	DestroyTexture();

	delete decoder;
}
Beispiel #4
0
void FinishView(ViewInfo* view)
{
    DestroyWebView(view->web);

    DestroyTexture(view->test_texture);
    DestroyMesh(view->test_mesh);
    DestroyVertexDef(view->boot_vert);
    delete view;
}
Beispiel #5
0
void DestroyGUIWindow( struct GUIWindow * w )
{
	int i;
	for( i = 0; i < MAX_GUI_ELEMENTS; i++ )
	{
		struct GUIBase * g = w->elements[i];
		if( g && g->DestroyMe ) g->DestroyMe( g );
	}

	if( w->renderbuffer ) DestroyRFBuffer( w->renderbuffer );
	if( w->torender ) DestroyTexture( w->torender );
}
MovieTexture_Generic::~MovieTexture_Generic()
{
	if( m_pDecoder )
		m_pDecoder->Close();

	/* m_pSprite may reference the texture; delete it before DestroyTexture. */
	delete m_pSprite;

	DestroyTexture();

	delete m_pDecoder;
}
Beispiel #7
0
hdTexture* hdTextureManager::ReloadTexture(hdTexture *texture, texturetype_t type)
{
    // There's no point resampling if nothing is going to change.
    if (texture->type != type)
    {
        char fname[kMaxTexturePathSize];
        snprintf(fname, kMaxTexturePathSize, "%s", texture->name);
        DestroyTexture(texture);
        return FindTexture(fname, type);
    }
    else
    {
        return texture;
    }
}
Beispiel #8
0
int main(int argc, char **argv)
{
	Initialise(800, 750, false);

	texture = CreateTexture("crate_sideup.png");
	//CreateFont();
	while(FrameworkUpdate())
	{
		ClearScreen();

   		//DrawString("This works fine i hope", 550, 550, 16);
		DrawTexture(texture, 100, 100, 128, 128);
	}

	DestroyTexture(texture);

	Shutdown();

	return 0;
}
Beispiel #9
0
void UpdateView(ViewInfo* view)
{
    DestroyTexture(view->test_texture);
    bitmap* img = WebViewGetPixelData(view->web);
    view->test_texture = CreateTexture(img);
    destroy_bitmap(img);

    glClear(GL_COLOR_BUFFER_BIT);

    glUseProgram(view->basic_shader);
    glBindBuffer(GL_ARRAY_BUFFER, view->test_mesh);
    ApplyVertexDef(view->boot_vert);

    glUniform1i(view->texture_uniform, 0);
    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, view->test_texture);

    glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

    glBindTexture(GL_TEXTURE_2D, 0);
}
Beispiel #10
0
static int
SW_ActivateRenderer(SDL_Renderer * renderer)
{
    SW_RenderData *data = (SW_RenderData *) renderer->driverdata;
    SDL_Window *window = SDL_GetWindowFromID(renderer->window);
    int i, n;

    if (data->renderer && data->renderer->ActivateRenderer) {
        if (data->renderer->ActivateRenderer(data->renderer) < 0) {
            return -1;
        }
    }
    if (data->updateSize) {
        /* Recreate the textures for the new window size */
        if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP2) {
            n = 2;
        } else if (renderer->info.flags & SDL_RENDERER_PRESENTFLIP3) {
            n = 3;
        } else {
            n = 1;
        }
        for (i = 0; i < n; ++i) {
            if (data->texture[i]) {
                DestroyTexture(data->renderer, data->texture[i]);
                data->texture[i] = 0;
            }
        }
        for (i = 0; i < n; ++i) {
            data->texture[i] =
                CreateTexture(data->renderer, data->format, window->w,
                              window->h);
            if (!data->texture[i]) {
                return -1;
            }
        }
        data->updateSize = SDL_FALSE;
    }
    return 0;
}
 void DestroyNativeTexture(void *inNativeTexture)
 {
    GLuint tid = (GLuint)(size_t)inNativeTexture;
    DestroyTexture(tid);
 }
////////////////////////////////////////////////////////////////
//
// CRenderWareSA::ModelInfoTXDRemoveTextures
//
// Remove the textures from the txds that are using them.
//
////////////////////////////////////////////////////////////////
void CRenderWareSA::ModelInfoTXDRemoveTextures ( SReplacementTextures* pReplacementTextures )
{
    // For each using txd
    for ( uint i = 0 ; i < pReplacementTextures->perTxdList.size () ; i++ )
    {
        SReplacementTextures::SPerTxd& perTxdInfo = pReplacementTextures->perTxdList[i];

        // Get textures info
        ushort usTxdId = perTxdInfo.usTxdId;
        CModelTexturesInfo* pInfo = MapFind ( ms_ModelTexturesInfoMap, usTxdId );

        // Validate
        dassert ( MapFind ( ms_ModelTexturesInfoMap, usTxdId ) );
        dassert ( ListContains ( pInfo->usedByReplacements, pReplacementTextures ) );

        // Remove replacement textures
        for ( uint i = 0 ; i < perTxdInfo.usingTextures.size () ; i++ )
        {
            RwTexture* pOldTexture = perTxdInfo.usingTextures[i];
            RwTexDictionaryRemoveTexture ( pInfo->pTxd, pOldTexture );
            dassert ( !RwTexDictionaryContainsTexture ( pInfo->pTxd, pOldTexture ) );
            if ( perTxdInfo.bTexturesAreCopies )
            {
                // Destroy the copy (but not the raster as that was not copied)
                pOldTexture->raster = NULL;
                RwTextureDestroy ( pOldTexture );
            }
        }

        // Ensure there are original named textures in the txd
        for ( uint i = 0 ; i < pInfo->originalTextures.size () ; i++ )
        {
            RwTexture* pOriginalTexture = pInfo->originalTextures[i];
            if ( !RwTexDictionaryFindNamedTexture ( pInfo->pTxd, pOriginalTexture->name ) )
                RwTexDictionaryAddTexture ( pInfo->pTxd, pOriginalTexture );
        }

        // Remove refs
        ListRemove ( pInfo->usedByReplacements, pReplacementTextures );

        // If no refs left, check original state and then remove info
        if ( pInfo->usedByReplacements.empty () )
        {
            // txd should now contain the same textures as 'originalTextures'
        #ifdef MTA_DEBUG
            std::vector < RwTexture* > currentTextures;
            GetTxdTextures ( currentTextures, pInfo->pTxd );
            assert ( currentTextures.size () == pInfo->originalTextures.size () );
            for ( uint i = 0 ; i < pInfo->originalTextures.size () ; i++ )
            {
                RwTexture* pOriginalTexture = pInfo->originalTextures[i];
                assert ( ListContains ( currentTextures, pOriginalTexture ) );
                ListRemove ( currentTextures, pOriginalTexture );
            }
            assert ( currentTextures.empty () );
        #endif

            // Remove info
            CTxdStore_RemoveRef ( pInfo->usTxdId );
            MapRemove ( ms_ModelTexturesInfoMap, usTxdId );
        }
    }

    // Destroy replacement textures
    for ( uint i = 0 ; i < pReplacementTextures->textures.size () ; i++ )
    {
        RwTexture* pOldTexture = pReplacementTextures->textures[i];
        DestroyTexture ( pOldTexture );
    }
    pReplacementTextures->textures.clear ();
}
Beispiel #13
0
void TextureViewGL::Destroy(nextar::RenderContext* rc) {
	auto gl = static_cast<RenderContext_Base_GL*>(rc);
	gl->DestroyTexture(texture);
	texture = 0;
}