1/*
2 * Copyright 2009, Haiku Inc. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Alexandre Deckner <alex@zappotek.com>
7 */
8
9#include "BitmapTexture.h"
10
11#include <Bitmap.h>
12
13#include <GL/gl.h>
14#include <GL/glu.h>
15#include <stdio.h>
16
17
18BitmapTexture::BitmapTexture(BBitmap* bitmap)
19	:
20	Texture()
21{
22	_Load(bitmap);
23}
24
25
26BitmapTexture::~BitmapTexture()
27{
28}
29
30
31void
32BitmapTexture::_Load(BBitmap* bitmap) {
33	if (bitmap == NULL)
34		return;
35
36	glGenTextures(1, &fId);
37	glBindTexture(GL_TEXTURE_2D, fId);
38	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
39	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
40	glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8,
41		(int) bitmap->Bounds().Width() + 1,
42		(int) bitmap->Bounds().Height() + 1,
43		0, GL_BGRA, GL_UNSIGNED_BYTE,
44		bitmap->Bits());
45
46	printf("BitmapTexture::_Load, loaded texture %u "
47		"(%" B_PRIi32 ", %" B_PRIi32 ", %" B_PRIi32 "bits)\n",
48		fId, (int32) bitmap->Bounds().Width(),
49		(int32) bitmap->Bounds().Height(),
50		8 * bitmap->BytesPerRow() / (int)bitmap->Bounds().Width());
51
52	delete bitmap;
53}
54