Created
July 14, 2011 15:56
-
-
Save roxlu/1082728 to your computer and use it in GitHub Desktop.
This file contains hidden or 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