Created
July 14, 2011 15:56
-
-
Save roxlu/1082728 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "BlendModeTester.h" | |
#include "error.h" | |
BlendModeTester::BlendModeTester() | |
:is_initialized(false) | |
,num_tex(1) | |
,curr_mode(0) | |
,page(0) | |
,item(0) | |
{ | |
modes.push_back(BlendMode(GL_ZERO,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE)); | |
modes.push_back(BlendMode(GL_ZERO,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ZERO,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ZERO,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_SRC_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_DST_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_DST_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_COLOR,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_CONSTANT_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ZERO)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_ONE_MINUS_CONSTANT_ALPHA,GL_SRC_ALPHA_SATURATE)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ZERO)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_SRC_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_DST_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_SRC_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_DST_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_CONSTANT_COLOR)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_ONE_MINUS_CONSTANT_ALPHA)); | |
modes.push_back(BlendMode(GL_SRC_ALPHA_SATURATE,GL_SRC_ALPHA_SATURATE)); | |
page = 0; | |
ofAddListener(ofEvents.keyReleased, this, &BlendModeTester::onKeyPress); | |
} | |
BlendModeTester::~BlendModeTester() { | |
glDeleteFramebuffers(1, &fbo_id); | |
} | |
void BlendModeTester::setBlendMode() { | |
glEnable(GL_BLEND); | |
glBlendFunc(modes[(page*15)+item].a, modes[(page*15)+item].b); | |
} | |
void BlendModeTester::onKeyPress(ofKeyEventArgs& args) { | |
if(args.key == 'n') { | |
page++; | |
item = 0; | |
} | |
else if(args.key == 'p') { | |
page = max(--page,0); | |
item = 0; | |
} | |
else if(args.key == 'i') { | |
--item; | |
} | |
else if(args.key == 'u') { | |
++item; | |
} | |
item = CLAMP(item,0,15); | |
int dx = (page*15) + item; | |
if(dx > modes.size()) { | |
dx = modes.size() - 1; | |
} | |
else if(dx < 0) { | |
dx = 0; | |
} | |
cout << "page: " << page <<", item:" << item << endl; | |
} | |
void BlendModeTester::setup(int w, int h) { | |
glEnable(GL_TEXTURE_2D); | |
width = w; | |
height = h; | |
// create frame buffer for drawing container | |
glGenFramebuffers(1,&fbo_id); eglGetError(); | |
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo_id); eglGetError(); | |
// create render buffers. | |
glGenRenderbuffers(1, &rbo_depth); eglGetError(); | |
// allocate memory for renderbuffer: depth dubbder | |
glBindRenderbuffer(GL_RENDERBUFFER, rbo_depth); eglGetError(); | |
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT32, width, height); | |
// attachment points: (3rd is always GL_RENDERBUFFER for now) | |
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo_id); eglGetError(); | |
glFramebufferRenderbuffer( | |
GL_DRAW_FRAMEBUFFER | |
,GL_DEPTH_ATTACHMENT | |
,GL_RENDERBUFFER | |
,rbo_depth | |
); eglGetError(); | |
GLuint id = 0; | |
glGenTextures(1, &tex_id); eglGetError(); | |
glBindTexture(GL_TEXTURE_2D, tex_id); | |
glTexImage2D( | |
GL_TEXTURE_2D // create a 2D texture | |
,0 // detail level | |
,GL_RGBA // how to store internally | |
,width | |
,height | |
,0 // border | |
,GL_RGBA // external r,g,b,a order | |
,GL_FLOAT // external data type | |
,NULL // the data | |
); eglGetError(); | |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); eglGetError(); | |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); eglGetError(); | |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); eglGetError(); | |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); eglGetError(); | |
// set attachment point to FBO color attachments. | |
glFramebufferTexture2D( | |
GL_DRAW_FRAMEBUFFER | |
,GL_COLOR_ATTACHMENT0 | |
,GL_TEXTURE_2D | |
,tex_id | |
,0 | |
); eglGetError(); | |
eglCheckFramebufferStatus(); | |
is_initialized = true; | |
} | |
bool BlendModeTester::hasMoreModesToTest() { | |
if(!is_initialized) { | |
cout << "not initialized!" << endl; | |
return false; | |
} | |
return curr_mode < 16; | |
} | |
void BlendModeTester::nextTest() { | |
glPopAttrib(); | |
glBindFramebuffer(GL_FRAMEBUFFER, 0); | |
++curr_mode; | |
} | |
void BlendModeTester::beginTest() { | |
float perc = (float)curr_mode/4; | |
int row = perc; | |
int col = (float)(perc-row) * 4; | |
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);; | |
glBindFramebuffer(GL_FRAMEBUFFER, fbo_id); | |
glPushAttrib(GL_VIEWPORT_BIT); | |
glViewport(col*256,row*192,256,192); | |
glEnable(GL_BLEND); | |
glBlendFunc(modes[curr_mode+(page * 16)].a, modes[curr_mode+(page * 16)].b); | |
} | |
void BlendModeTester::endTest() { | |
curr_mode = 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment