色の反転

「色の反転」の編集履歴(バックアップ)一覧はこちら

色の反転」(2015/02/01 (日) 21:24:53) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

<p>色を反転させます。</p> <p><img alt="" src="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=inv.png" style="width:320px;height:253px;" /></p> <table border="1" cellpadding="1" cellspacing="1" style="width:100px;"><tbody><tr><td>ファイル</td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=main.cpp"> main.cpp</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=lodepng.cpp"> lodepng.cpp</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=lodepng.h"> lodepng.h</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=PNG.h"> PNG.h</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=GLSL.h"> GLSL.h</a></td> </tr><tr><td> <p><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=sample.png"> sample.png</a></p> <p><img alt="" src="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=sample.png" /></p> </td> </tr></tbody></table><p> </p>
<p>色を反転させます。</p> <p><img alt="" src="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=inv.png" style="width:320px;height:253px;" /></p> <table border="1" cellpadding="1" cellspacing="1" style="width:100px;"><tbody><tr><td>ファイル</td> </tr><tr><td><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=main.cpp"> main.cpp</a></td> </tr><tr><td><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=lodepng.cpp"> lodepng.cpp</a></td> </tr><tr><td><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=lodepng.h"> lodepng.h</a></td> </tr><tr><td><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=PNG.h"> PNG.h</a></td> </tr><tr><td><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=GLSL.h"> GLSL.h</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=vertex.shader"> vertex.shader</a></td> </tr><tr><td><a href="http://www21.atwiki.jp/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=flagment.shader"> flagment.shader</a></td> </tr><tr><td> <p><a href="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=sample.png"> sample.png</a></p> <p><img alt="" src="http://cdn21.atwikiimg.com/opengl?cmd=upload&amp;act=open&amp;pageid=321&amp;file=sample.png" /></p> </td> </tr></tbody></table><p>vertex.shader</p> <table border="1" cellpadding="1" cellspacing="1" style="width:600px;"><tbody><tr><td> <p>varying vec2 pos;</p> <p>void main(void)<br /> {<br />     pos = gl_Vertex.xy;<br />     gl_Position = ftransform();<br /> }</p> </td> </tr></tbody></table><p>flagment.shader</p> <table border="1" cellpadding="1" cellspacing="1" style="width:600px;"><tbody><tr><td> <p>uniform sampler2D image;<br /> uniform int img_Width, img_Height;<br /> varying vec2 pos;</p> <p>void main(void)<br /> {<br />     vec2 texCoord = vec2(pos.x / float(img_Width), pos.y / float(img_Height));<br />     vec4 col = texture2D(image, texCoord);<br />     gl_FragColor.rgb = vec3(1.0) - col.rgb;<br /> }</p> </td> </tr></tbody></table><p>main.cpp</p> <table border="1" cellpadding="1" cellspacing="1" style="width:600px;"><tbody><tr><td> <p>#pragma comment(linker, "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup")<br /> #pragma comment(lib, "glew32.lib")<br />  <br /> #include &lt;GL/glew.h&gt;<br /> #include &lt;GL/freeglut/freeglut.h&gt;<br /> #include "GLSL.h"<br /> #include "PNG.h"</p> <p>#define WIDTH 640<br /> #define HEIGHT 480</p> <p>GLSL glsl;</p> <p>GLuint texName[2];<br /> TEXTURE *texture[2];</p> <p>void texDraw(int NO,int x,int y,int width,int height){<br />     glBindTexture(GL_TEXTURE_2D, texName[NO]);<br />     glEnable(GL_TEXTURE_2D);//テクスチャ有効<br />     glEnable(GL_ALPHA_TEST);//アルファテスト開始<br />     glBegin(GL_POLYGON);<br />     glTexCoord2f(0.0f, 1.0f); glVertex2d(x , y+height);//左下<br />     glTexCoord2f(0.0f, 0.0f); glVertex2d(x ,  y);//左上<br />     glTexCoord2f(1.0f, 0.0f); glVertex2d( x+width ,  y);//右上<br />     glTexCoord2f(1.0f, 1.0f); glVertex2d( x+width , y+height);//右下<br />     glEnd();<br />     glDisable(GL_ALPHA_TEST);//アルファテスト終了<br />     glDisable(GL_TEXTURE_2D);//テクスチャ無効<br /> }</p> <p>void display(void)<br /> {<br />  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);<br />  glMatrixMode(GL_MODELVIEW);<br />     glLoadIdentity();<br />  glOrtho(0.0, WIDTH, HEIGHT, 0.0, -1.0, 1.0);</p> <p><br />  texDraw(1,0,0,320,240);<br />  glsl.ON();<br />  GLint imageLoc = glGetUniformLocation(glsl.ShaderProg, "image");<br />  glUniform1i(imageLoc, 0);<br />  GLint imgWidthLoc = glGetUniformLocation(glsl.ShaderProg, "img_Width");<br />  glUniform1i(imgWidthLoc, texture[2]-&gt;Width);<br />  GLint imgHeightLoc = glGetUniformLocation(glsl.ShaderProg, "img_Height");<br />  glUniform1i(imgHeightLoc, texture[2]-&gt;Height);</p> <p> texDraw(2,320,0,320,240);<br />  glsl.OFF();</p> <p> glutSwapBuffers();<br /> }<br /> void idle(void)<br /> {<br />  glutPostRedisplay();<br /> }<br /> void TexCreate(int NO,char* FileName){<br />   glGenTextures(1, &amp;texName[NO]);<br />   texture[NO] = new TEXTURE(FileName);<br />   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);<br />   //テクスチャオブジェクトの作成<br />   glBindTexture(GL_TEXTURE_2D, texName[NO]);<br />   //テクスチャの指定<br />   glTexImage2D(GL_TEXTURE_2D,0,GL_RGBA,texture[NO]-&gt;Width,texture[NO]-&gt;Height,0,GL_RGBA,GL_UNSIGNED_BYTE,texture[NO]-&gt;image);<br />   //テクスチャの繰り返し方法の指定<br />   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT);//GL_CLAMP);<br />   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT);//GL_CLAMP);<br />   //テクスチャを拡大・縮小する方法の指定<br />   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);//NEAREST);<br />   glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);//NEAREST);<br />   glBindTexture(GL_TEXTURE_2D, 0);<br /> }<br /> void Init(){<br />  glClearColor(0.0, 0.0, 0.0, 1.0);<br />  glOrtho(0, WIDTH, HEIGHT, 0, -1, 1);<br />  glsl.InitGLSL("vertex.shader","flagment.shader");<br />  TexCreate(1,"sample.png");<br />  TexCreate(2,"sample.png");<br /> }<br /> int main(int argc, char *argv[])<br /> {<br />  glutInitWindowPosition(100, 100);<br />  glutInitWindowSize(WIDTH, HEIGHT);<br />  glutInit(&amp;argc, argv);<br />  glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);<br />  glutCreateWindow("色の反転");<br />  glutDisplayFunc(display);<br />  glutIdleFunc(idle);<br />  Init();<br />  glutMainLoop();<br />  return 0;<br /> }</p> </td> </tr></tbody></table><p> </p> <p> </p> <p> </p> <p> </p> <p> </p> <p> </p>

表示オプション

横に並べて表示:
変化行の前後のみ表示: