Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #include <gl\gl.h>
- #include "d:\\gl3.h"
- #pragma comment(lib, "opengl32.lib")
- const char* vs =
- "#version 330\n"
- "void main() {"
- "gl_Position = vec4(gl_Vertex.xyz, 1.0);"
- "}";
- const char* fs =
- "#version 330\n"
- "uniform float t;"
- "out vec4 f;"
- "void main() {"
- "f = vec4(sin(t+gl_FragCoord.y/768.0) * cos(t+gl_FragCoord.x/1024.0), 0.0, 0.0, 1.0);"
- "}";
- int WINAPI WinMain(HINSTANCE h1, HINSTANCE h2, LPSTR cmd, int show)
- {
- static PIXELFORMATDESCRIPTOR pfd = {0, 0, PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0};
- HDC hDC = GetDC(CreateWindowA("edit", 0, WS_CAPTION | WS_VISIBLE, 100, 100, 1024, 768, 0, 0, 0, 0));
- SetPixelFormat(hDC, ChoosePixelFormat(hDC, &pfd), &pfd);
- wglMakeCurrent(hDC, wglCreateContext(hDC));
- ShowCursor(FALSE);
- PFNGLCREATESHADERPROGRAMVPROC glCreateShaderProgramv = (PFNGLCREATESHADERPROGRAMVPROC)wglGetProcAddress("glCreateShaderProgramv");
- PFNGLUSEPROGRAMSTAGESPROC glUseProgramStages = (PFNGLUSEPROGRAMSTAGESPROC)wglGetProcAddress("glUseProgramStages");
- PFNGLGENPROGRAMPIPELINESPROC glGenProgramPipelines = (PFNGLGENPROGRAMPIPELINESPROC)wglGetProcAddress("glGenProgramPipelines");
- PFNGLBINDPROGRAMPIPELINEPROC glBindProgramPipeline = (PFNGLBINDPROGRAMPIPELINEPROC)wglGetProcAddress("glBindProgramPipeline");
- PFNGLPROGRAMUNIFORM1FPROC glProgramUniform1f = (PFNGLPROGRAMUNIFORM1FPROC)wglGetProcAddress("glProgramUniform1f");
- PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)wglGetProcAddress("glGetUniformLocation");
- GLuint pipeline;
- glGenProgramPipelines(1, &pipeline);
- glBindProgramPipeline(pipeline);
- GLuint pvs = glCreateShaderProgramv(GL_VERTEX_SHADER, 1, &vs);
- glUseProgramStages(pipeline, GL_VERTEX_SHADER_BIT, pvs);
- GLuint pfs = glCreateShaderProgramv(GL_FRAGMENT_SHADER, 1, &fs);
- glUseProgramStages(pipeline, GL_FRAGMENT_SHADER_BIT, pfs);
- GLuint loc = glGetUniformLocation(pfs, "t");
- DWORD start = GetTickCount();
- do
- {
- glBindProgramPipeline(pipeline);
- glProgramUniform1f(pfs, loc, (GetTickCount()-start) * 0.001f);
- glRecti(-1, -1, 1, 1);
- SwapBuffers(hDC);
- } while(!GetAsyncKeyState(VK_ESCAPE));
- ExitProcess(0);
- //return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement