2 * psychlops_g_image_OSX.h
3 * Psychlops Standard Library (Universal)
5 * Last Modified 2006/01/04 by Kenchi HOSOKAWA
6 * (C) 2006 Kenchi HOSOKAWA, Kazushi MARUYA and Takao SATO
9 #include <ApplicationServices/ApplicationServices.h>
10 #include <CoreServices/CoreServices.h>
11 #include <OpenGL/OpenGL.h>
12 #include <OpenGL/gl.h>
20 #include "psychlops_g_API_OSX.h"
21 #include "../../core/graphic/psychlops_g_image.h"
30 Image& Image::cache(bool on_off) {
33 glEnable(GL_TEXTURE_RECTANGLE_EXT);
34 glBindTexture(GL_TEXTURE_RECTANGLE_EXT, api_->VRAMoffset);
35 glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, width_, height_, APIImageProperties::PixCompGL_[pixcomp_], APIImageProperties::PixPrecGL_[pixprec_], getBitmapPtr());
36 glDisable(GL_TEXTURE_RECTANGLE_EXT);
38 glEnable(GL_TEXTURE_RECTANGLE_EXT);
39 glGenTextures(1, &api_->VRAMoffset);
40 glBindTexture(GL_TEXTURE_RECTANGLE_EXT, api_->VRAMoffset);
41 glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
42 glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
43 glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
44 glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
45 glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, PixCompSize_[pixcomp_], width_, height_, 0, APIImageProperties::PixCompGL_[pixcomp_], APIImageProperties::PixPrecGL_[pixprec_], getBitmapPtr());
46 glDisable(GL_TEXTURE_RECTANGLE_EXT);
49 // APIImageProperties::regist((int)Display::getWidth(), (int)Display::getHeight(), width_, height_, VRAMleft_, VRAMtop_);
50 // glDisable(GL_BLEND);
51 // glDrawBuffer(GL_AUX1);
52 // for(int y=0; y<height_; y++) {
53 // for(int x=0; x<width_; x++) {
54 // Display::pix(x+VRAMleft_, y+VRAMtop_, getPix(x, y));
57 // glDrawBuffer(GL_BACK);
58 // glEnable(GL_BLEND);
60 glDrawBuffer(GL_AUX1);
61 glColor4f(1.0,1.0,1.0,1.0);
62 glEnable(GL_TEXTURE_RECTANGLE_EXT);
63 glBindTexture(GL_TEXTURE_RECTANGLE_EXT, api_->getTexIndex());
65 glTexCoord2d(0 , height_);
66 glVertex2f(targetarea_.getLeft() , targetarea_.getTop());
67 glTexCoord2d(width_ , height_);
68 glVertex2f(targetarea_.getRight()+1 , targetarea_.getTop());
69 glTexCoord2d(width_ , 0);
70 glVertex2f(targetarea_.getRight()+1, targetarea_.getBottom()+1);
72 glVertex2f(targetarea_.getLeft() , targetarea_.getBottom()+1);
74 glDisable(GL_TEXTURE_RECTANGLE_EXT);
75 glDrawBuffer(GL_BACK);
78 glDeleteTextures(1, &(api_->VRAMoffset));
85 } /* <- namespace Psycholops */