#include #include #include #include "pui.h" #include "textures/slider1-vert.c" #include "textures/slider1-vert-prelight.c" #include "textures/trough1-vertical.c" #include "textures/slider2-vert.c" #include "textures/slider2-vert-prelight.c" #include "textures/trough2-vertical.c" #include "textures/knob4.c" #include "textures/font.c" void PTextures::BindTexture(int texture, int width, int height, const unsigned char *data, int format) { glBindTexture(GL_TEXTURE_2D, tex[texture]); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, format, GL_UNSIGNED_BYTE, data); w[texture] = width; h[texture] = height; } void PTextures::InitTextures() { if (initialised) return; initialised = true; glGenTextures(TEX_END, this->tex); /* Texture buffer for generated textures */ int size = 128; w[TEX_BACKTILE] = h[TEX_BACKTILE] = size; uint8_t *buffer = new uint8_t[size * size]; /* Create background tile */ for (int i = 0; i < size * size; i++) { /* Normalised noise */ int r = 0; for (int j = 0; j < 4; j++) r += (rand() & 0x1F); buffer[i] = (r >> 2) + 0x30; } BindTexture(TEX_BACKTILE, size, size, buffer, GL_LUMINANCE); /* Create glow, focused at 1/3 down the window */ int cx = size / 2; int cy = size / 3; for (int y = 0; y < size; y++) { for (int x = 0; x < size; x++) { float b = 196 - sqrtf((cx - x) * (cx - x) + (cy - y) * (cy - y)) * 256 / size; if (b < 0) b = 0; buffer[x + y * size] = b; } } BindTexture(TEX_BACKGLOW, size, size, buffer, GL_LUMINANCE); delete buffer; BindTexture(TEX_SLIDER1, slider1_vert.width, slider1_vert.height, slider1_vert.pixel_data); BindTexture(TEX_SLIDER1_PRE, slider1_vert_prelight.width, slider1_vert_prelight.height, slider1_vert_prelight.pixel_data); BindTexture(TEX_TROUGH1, trough1_vertical.width, trough1_vertical.height, trough1_vertical.pixel_data); BindTexture(TEX_SLIDER2, slider2_vert.width, slider2_vert.height, slider2_vert.pixel_data); BindTexture(TEX_SLIDER2_PRE, slider2_vert_prelight.width, slider2_vert_prelight.height, slider2_vert_prelight.pixel_data); BindTexture(TEX_TROUGH2, trough2_vertical.width, trough2_vertical.height, trough2_vertical.pixel_data); BindTexture(TEX_KNOB, knob4.width, knob4.height, knob4.pixel_data); this->font = new FTTextureFont(font_data, font_data_len); // this->font = FTGL::ftglCreateTextureFont("/usr/share/fonts/truetype/droid/DroidSans.ttf"); this->font->FaceSize(20); // FTGL::ftglSetFontFaceSize(this->font, 12, 12); }