Jump to content

  • Log In with Google      Sign In   
  • Create Account

SDL_Surface help -- Drawing a minimap


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
No replies to this topic

#1 Jossos   Members   -  Reputation: 203

Like
0Likes
Like

Posted 05 April 2013 - 03:27 AM

So I want to draw a minimap for my app pixel-by-pixel, but I have no idea how, and google has yielded no results (mainly stuff loading already existing images - I already know how to do)

 

I'll place my minimap Class for you to peruse and I hope someone can help me. It's the syntax I don't know about. (there's a bit of opengl in here too, but it's mostly an sdl question).

class smMINIMAP
{
private:
	float xPos, yPos, width, height;
	smMAP* mapRef;
	SDL_Surface *map_img;

	void PutPixel(int x, int y, int color);
public:
	smMINIMAP(smMAP& map);
	~smMINIMAP();

	void Draw(int x, int y, int w = 200, int h = 200);
};
smMINIMAP::smMINIMAP(smMAP& map)
{
	*mapRef = map;

	map_img = SDL_CreateRGBSurface(0, mapRef->getWidth(), mapRef->getLength(), 32, 0, 0, 0, 0);
}

smMINIMAP::~smMINIMAP()
{
	delete mapRef;
}

void smMINIMAP::Draw(int x, int y, int w, int h)
{
	Uint32* pixels = (Uint32*)map_img->pixels;

	for (int w = 0; w < mapRef->getWidth(); w++)
	{
		for (int l = 0; l < mapRef->getLength(); l++)
		{
			PutPixel(w, l, 0xff0000);
		}
	}

	glEnable(GL_TEXTURE_2D);

	GLuint ret;

	glGenTextures(1, &ret);
	glBindTexture(GL_TEXTURE_2D, ret);
	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, map_img->w, map_img->h, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8, map_img->pixels);

	glBegin(GL_QUADS);
		glTexCoord2f(0, 0); glVertex2f(x,     y);
		glTexCoord2f(1, 0); glVertex2f(x + w, y);
		glTexCoord2f(1, 1); glVertex2f(x + w, y + h);
		glTexCoord2f(0, 1); glVertex2f(x,     y + h);
	glEnd();
}

void smMINIMAP::PutPixel(int x, int y, int color)
{
	unsigned int* ptr = (unsigned int*)map_img->pixels;
	int lineoffset = y * (map_img->pitch / 4);
	ptr[lineoffset + x] = color;
}

 

 

smMAP is just a 2d array of tiles. It's irrelevant right now, as I just want to make each pixel red to get something on the screen - then I can colorize it.

 

Help is greatly appreciated!


Edited by Jossos, 05 April 2013 - 03:47 AM.


Sponsor:



Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS