From: Mikko Rasa Date: Thu, 9 Aug 2012 19:35:39 +0000 (+0300) Subject: A simple program to test cubemap texture functionality X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=commitdiff_plain;h=6c2b7c80d806cb46284f66ff55bbcb8fe7bdce05 A simple program to test cubemap texture functionality --- diff --git a/Build b/Build index 24e767ac..4ea0aa79 100644 --- a/Build +++ b/Build @@ -54,6 +54,15 @@ package "mspgl" }; }; + program "cubemap" + { + source "demos/cubemap.cpp"; + build_info + { + library "mspgl"; + }; + }; + source_tarball { source "License.txt"; diff --git a/demos/cubemap.cpp b/demos/cubemap.cpp new file mode 100644 index 00000000..b3de5a12 --- /dev/null +++ b/demos/cubemap.cpp @@ -0,0 +1,93 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace Msp; + +void create_face_texture(GL::TextureCube &texture, GL::TextureCubeFace face) +{ + unsigned char *pixels = new unsigned char[128*128*3]; + for(unsigned y=0; y<128; ++y) + for(unsigned x=0; x<128; ++x) + { + unsigned i = (x+y*128)*3; + pixels[i] = (face==GL::NEGATIVE_X ? 0 : face==GL::POSITIVE_X ? 255 : face==GL::NEGATIVE_Z ? 255-x*2 : x*2); + pixels[i+1] = (face==GL::NEGATIVE_Y ? 0 : face==GL::POSITIVE_Y ? 255 : 255-y*2); + pixels[i+2] = (face==GL::NEGATIVE_Z ? 0 : face==GL::POSITIVE_Z ? 255 : face==GL::POSITIVE_X ? 255-x*2 : face==GL::NEGATIVE_X ? x*2 : face==GL::NEGATIVE_Y ? 255-y*2 : y*2); + } + texture.image(face, 0, GL::RGB, GL::UNSIGNED_BYTE, pixels); + delete[] pixels; +} + +int main() +{ + Graphics::SimpleGLWindow window(400, 400); + + GL::TextureCube texture; + texture.storage(GL::RGB, 128); + texture.set_min_filter(GL::LINEAR); + texture.set_wrap(GL::CLAMP_TO_EDGE); + create_face_texture(texture, GL::NEGATIVE_Z); + create_face_texture(texture, GL::POSITIVE_Z); + create_face_texture(texture, GL::NEGATIVE_Y); + create_face_texture(texture, GL::POSITIVE_Y); + create_face_texture(texture, GL::NEGATIVE_X); + create_face_texture(texture, GL::POSITIVE_X); + + GL::Mesh box((GL::VERTEX3, GL::TEXCOORD3, GL::NORMAL3)); + GL::MeshBuilder builder(box); + GL::BoxBuilder(2, 2, 2).build(builder); + for(unsigned i=0; i