Windows窗口中创建OpenGL上下文并调用OpenGL函数

本文将指导你在Windows操作系统下创建OpenGL上下文,并详细讲解如何调用OpenGL函数,实现图形渲染的基本步骤。
摘要由CSDN通过智能技术生成

Windows窗口中创建OpenGL上下文并调用OpenGL函数

#include <Windows.h>
#include <iostream>
#include <GL/GL.h>
#pragma comment (lib, "opengl32.lib")

enum {
   GL_VERTEX_SHADER=0x8B31, GL_COMPILE_STATUS=0x8B81, GL_FRAGMENT_SHADER=0x8B30, GL_LINK_STATUS=0x8B82, GL_ARRAY_BUFFER=0x8892, GL_STATIC_DRAW=0x88E4};

void* GetGLFuncAddress(const char* name);

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

typedef  GLuint(__stdcall *hGlCreateShader)(GLenum shaderType);
hGlCreateShader glCreateShader;

typedef void (__stdcall *hGlShaderSource)(GLuint shader, GLsizei count, const char** string, const GLint* length);
hGlShaderSource glShaderSource;

typedef void (__stdcall *hGlCompileShader)(GLuint shader);
hGlCompileShader glCompileShader;

typedef void (__stdcall *hGlGetShaderiv)(GLuint shader, GLenum pname, GLint* params);
hGlGetShaderiv glGetShaderiv;

typedef void (__stdcall *hGlGetShaderInfoLog)(GLuint shader, GLsizei maxLength, GLsizei* length, char* infoLog);
hGlGetShaderInfoLog glGetShaderInfoLog;

typedef GLuint (__stdcall *hGlCreateProgram)(void);
hGlCreateProgram glCreateProgram;

typedef void (__stdcall *hGlAttachShader)(GLuint program, GLuint shader);
hGlAttachShader glAttachShader;

typedef void (__stdcall *hGlLinkProgram)(GLuint program);
hGlLinkProgram glLinkProgram;

typedef void (__stdcall *hGlGetProgramiv)(GLuint program, GLenum pname, GLint* params);
hGlGetProgramiv glGetProgramiv;


typedef void (__stdcall * hGlGetProgramInfoLog)(GLuint program, GLsizei maxLength, GLsizei* length, char* infoLog);
hGlGetProgramInfoLog glGetProgramInfoLog;

typedef void (__stdcall *hGlDeleteShader)(GLuint shader);
hGlDeleteShader glDeleteShader;

typedef void (__stdcall * hGlGenVertexArrays)(GLsizei n, GLuint* arrays);
hGlGenVertexArrays glGenVertexArrays;

typedef void (__stdcall *hGlGenBuffers)(GLsizei n, GLuint* buffers);
hGlGenBuffers glGenBuffers;

typedef void (__stdcall *hGlBindVertexArray)(GLuint array);
hGlBindVertexArray glBindVertexArray;

typedef void (__stdcall * hGlBindBuffer)(GLenum target, GLuint buffer);
hGlBindBuffer glBindBuffer;

typedef <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值