www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - [DerelictSDL] SDL_RenderCopy does not accept optional arguements when

reply Jack <Jackoz530 gmail.com> writes:
So I have separated my texture rendering methods in another file 
and have run into a problem hence the title name.

#main.d
----------

void render()
{
SDL_RenderClear(renderTarget);
renderSprite(renderTarget);
SDL_RenderPresent(renderTarget);
}
----------
#other_file.d
-----------
void renderSprite(SDL_Renderer _renderTarget)
{

SDL_Texture texture = SDL_CreateTextureFromSurface(_renderTarget, 
IMG_Load("image.png"));

SDL_RenderCopy(_renderTarget,texture, null,null);
}
----------

Error: cannot implicitly convert expression (null) of type 
typeof(null) to SDL_Rect
Error: cannot implicitly convert expression (null) of type 
typeof(null) to SDL_Rect

=====================
But when I do this:

#main.d
-------------------

void render()
{
SDL_RenderClear(renderTarget);
SDL_RenderCopy(renderTarget,texture,null,null);
SDL_RenderPresent(renderTarget);
}
--------------------

It works with no problem. I've DerelictSDL2.load and SDL_Init 
already.
So is this a bug or am I doing something wrong here?
Dec 24 2015
parent reply Lucien <lucien.perregaux gmail.com> writes:
On Thursday, 24 December 2015 at 09:41:39 UTC, Jack wrote:
 So I have separated my texture rendering methods in another 
 file and have run into a problem hence the title name.

 #main.d
 ----------

 void render()
 {
 SDL_RenderClear(renderTarget);
 renderSprite(renderTarget);
 SDL_RenderPresent(renderTarget);
 }
 ----------
 #other_file.d
 -----------
 void renderSprite(SDL_Renderer _renderTarget)
 {

 SDL_Texture texture = 
 SDL_CreateTextureFromSurface(_renderTarget, 
 IMG_Load("image.png"));

 SDL_RenderCopy(_renderTarget,texture, null,null);
 }
 ----------

 Error: cannot implicitly convert expression (null) of type 
 typeof(null) to SDL_Rect
 Error: cannot implicitly convert expression (null) of type 
 typeof(null) to SDL_Rect

 =====================
 But when I do this:

 #main.d
 -------------------

 void render()
 {
 SDL_RenderClear(renderTarget);
 SDL_RenderCopy(renderTarget,texture,null,null);
 SDL_RenderPresent(renderTarget);
 }
 --------------------

 It works with no problem. I've DerelictSDL2.load and SDL_Init 
 already.
 So is this a bug or am I doing something wrong here?
You need a pointer to renderTarget. #other_file.d --------------------- module my.sdl.project; import derelict.sdl2.sdl; import derelict.sdl2.image; void renderSprite(SDL_Renderer* _renderTarget) { SDL_Texture* texture = SDL_CreateTextureFromSurface(_renderTarget, IMG_Load("image.png")); SDL_RenderCopy(_renderTarget,texture, null,null); } --------------- #main.d ----------- import my.sdl.project; //... -----------
Dec 24 2015
parent reply Jack <Jackoz530 gmail.com> writes:
On Thursday, 24 December 2015 at 10:42:57 UTC, Lucien wrote:
 On Thursday, 24 December 2015 at 09:41:39 UTC, Jack wrote:
 [...]
You need a pointer to renderTarget. #other_file.d --------------------- module my.sdl.project; import derelict.sdl2.sdl; import derelict.sdl2.image; void renderSprite(SDL_Renderer* _renderTarget) { SDL_Texture* texture = SDL_CreateTextureFromSurface(_renderTarget, IMG_Load("image.png")); SDL_RenderCopy(_renderTarget,texture, null,null); } --------------- #main.d ----------- import my.sdl.project; //... -----------
I actually have a pointer in the original project but I seem to forgot it when I'm typing this example. Sorry bout the misunderstanding, but yeah problem still stands.
Dec 24 2015
parent reply Lucien <lucien.perregaux gmail.com> writes:
On Thursday, 24 December 2015 at 11:32:24 UTC, Jack wrote:
 On Thursday, 24 December 2015 at 10:42:57 UTC, Lucien wrote:
 On Thursday, 24 December 2015 at 09:41:39 UTC, Jack wrote:
 [...]
You need a pointer to renderTarget. #other_file.d --------------------- module my.sdl.project; import derelict.sdl2.sdl; import derelict.sdl2.image; void renderSprite(SDL_Renderer* _renderTarget) { SDL_Texture* texture = SDL_CreateTextureFromSurface(_renderTarget, IMG_Load("image.png")); SDL_RenderCopy(_renderTarget,texture, null,null); } --------------- #main.d ----------- import my.sdl.project; //... -----------
I actually have a pointer in the original project but I seem to forgot it when I'm typing this example. Sorry bout the misunderstanding, but yeah problem still stands.
I can't help you without your original code.
Dec 24 2015
parent Jack <Jackoz530 gmail.com> writes:
On Thursday, 24 December 2015 at 12:42:11 UTC, Lucien wrote:
 On Thursday, 24 December 2015 at 11:32:24 UTC, Jack wrote:
 On Thursday, 24 December 2015 at 10:42:57 UTC, Lucien wrote:
 [...]
I actually have a pointer in the original project but I seem to forgot it when I'm typing this example. Sorry bout the misunderstanding, but yeah problem still stands.
I can't help you without your original code.
I think I fixed it. I was initializing SDL_Rects to nulls inside some of the arguments. It was a slight case of Spaghetti Code. Oh well, thank you for your time.
Dec 24 2015