On Wednesday, 10 December 2014 at 18:06:08 UTC, Paul wrote:
On Wednesday, 10 December 2014 at 16:58:57 UTC, Mike Parker wrote:
On 12/11/2014 12:31 AM, Paul wrote:


This thread has degenerated into a discussion of the set up of my OS
which is miles off topic and should probably be abandoned.

Maybe not. The trouble is that others have been able to compile and run the same code without error. Given that you are still unable to, that puts your system configuration in the spotlight. Your error with libpng points even more in that direction. If that turns out to be the culprit, it wouldn't be the first time someone has had run-time errors because of something not quite right on their system.

Without a failure that others can reproduce, there's not much for anyone to do other than make (hopefully educated) guesses. I'm happy to keep doing so until it's either resolved or I run out of ideas.

I appreciate that Mike, I would really like to get this sorted so I can get on with learning D. I read up on the procedure for building the latest libpng which I did. It gives same error message as using the earlier version.

It seems to me that trying to use SDL_image rather than the 'built in' *.bmp handling might be compounding the problem (unless libpng is called upon to render bmps as well?). I don't know what to try next I'm afraid.

On another of my machines (64 bit Linux 17 XFCE) I've just installed dmd (64 bit) and dub binary, xorg-dev (includes libpng 1.2.50) and built SDL2. This program now works without any errors:

import derelict.sdl2.sdl;
import std.stdio;
import std.conv;



void main()
{


    DerelictSDL2.load();

    scope(exit) SDL_Quit();

    //init sdl
        if (SDL_Init(SDL_INIT_EVERYTHING) != 0){
                writeln("SDL_Init Error: ", to!string( SDL_GetError() ));
                return;
        }
                
        //open a window
SDL_Window *window = SDL_CreateWindow("Window Title!", 100, 100, 640, 480, SDL_WINDOW_SHOWN);
        if (window == null){
                writeln("SDL_CreateWindow Error: ", to!string(SDL_GetError() ));
                return;
        }       
                
        //get a renderer (ie buffer), use software renderer for now
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_SOFTWARE);
        if (renderer == null){
writeln( "SDL_CreateRenderer Error: " , to!string( SDL_GetError() ));
                return;
        }
        
        //load a bitmap
        SDL_Surface *image = SDL_LoadBMP("./test.bmp");
        if (image == null){
                writeln( "SDL_LoadBMP error: " , to!string(SDL_GetError() ));
                return;
        }       
        
        //create texture for bitmap
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, image);
        if (texture == null){
writeln( "CreateTextureFromSurface error: " , to!string(SDL_GetError() ));
                return;
        }               
        
    //copy to renderer at correct position & scale
    SDL_Rect sourceRect = { 0, 0, 64, 64 };
    SDL_Rect destRect = { 100, 100, 64, 64 };
    SDL_RenderCopy(renderer, texture, &sourceRect, &destRect);  
                
        
    //display and pause
    SDL_RenderPresent(renderer);
    SDL_Delay(2000);
        
                
}

The two machines on which errors occur are a Mint 13 (32 bit) box and an ageing laptop with Lubuntu 14.04. I've followed the same procedures but the 64 bit obviously has the 64 bit dmd compiler.


Reply via email to