0001: //-----------------------------------------------------------------------------
0002: // File: GLSL.h
0003: //
0004: // Desc: Library for the OpenGL Shading Language.
0005: //-----------------------------------------------------------------------------
0006: #ifndef GLSL_H
0007: #define GLSL_H
0008: 
0009: #include <GL/gl.h>
0010: #include <GL/glu.h>
0011: #include "gl3dlabs.h"
0012: 
0013: //-----------------------------------------------------------------------------
0014: //
0015: // OpenGL Shading Language 関数
0016: //
0017: //-----------------------------------------------------------------------------
0018: extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
0019: extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
0020: extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
0021: extern PFNGLDETACHOBJECTARBPROC glDetachObjectARB;
0022: extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
0023: 
0024: extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
0025: extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
0026: extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
0027: extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
0028: extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
0029: 
0030: extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
0031: extern PFNGLGETOBJECTPARAMETERFVARBPROC glGetObjectParameterfvARB;
0032: extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
0033: 
0034: extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
0035: extern PFNGLUNIFORM2FARBPROC glUniform2fARB;
0036: extern PFNGLUNIFORM3FARBPROC glUniform3fARB;
0037: extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
0038: 
0039: extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
0040: extern PFNGLUNIFORM2IARBPROC glUniform2iARB;
0041: extern PFNGLUNIFORM3IARBPROC glUniform3iARB;
0042: extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
0043: 
0044: extern PFNGLUNIFORM1FVARBPROC glUniform1fvARB;
0045: extern PFNGLUNIFORM2FVARBPROC glUniform2fvARB;
0046: extern PFNGLUNIFORM3FVARBPROC glUniform3fvARB;
0047: extern PFNGLUNIFORM4FVARBPROC glUniform4fvARB;
0048: 
0049: extern PFNGLUNIFORM1IVARBPROC glUniform1ivARB;
0050: extern PFNGLUNIFORM2IVARBPROC glUniform2ivARB;
0051: extern PFNGLUNIFORM3IVARBPROC glUniform3ivARB;
0052: extern PFNGLUNIFORM4IVARBPROC glUniform4ivARB;
0053: 
0054: 
0055: 
0056: 
0057: //-------------------------------------------------------------
0058: // Name: class CD3DApplication
0059: // Desc: シェーダへアクセスするためのインターフェイス
0060: //-------------------------------------------------------------
0061: class GLSL
0062: {
0063:     // ファイルを読み込む
0064:     static HRESULT ReadShader(char *fileName, GLubyte *shaderText, int size);
0065:     // シェーダのファイルのサイズを調べる
0066:     static int GetShaderSize(char *fileName);
0067:     // シェーダプログラムを読み込む
0068:     static HRESULT readShaderSource(char *fileName, GLubyte **vertexShader, GLubyte **fragmentShader);
0069:     // シェーダを OpenGL へセットアップする
0070:     static HRESULT handShadersToOpenGL(GLhandleARB Program, GLubyte *vertexShader,  GLubyte *fragmentShader);
0071: public:
0072:     // 初期化
0073:     static HRESULT Init();
0074:     // シェーダの読み込み
0075:     static HRESULT CreateShaderFromFile(char *fileName, GLhandleARB *pProgram);
0076: };
0077: 
0078: 
0079: #endif // !GLSL_H
0080: 
0081: