本文整理汇总了C++中glewInit函数的典型用法代码示例。如果您正苦于以下问题:C++ glewInit函数的具体用法?C++ glewInit怎么用?C++ glewInit使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了glewInit函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ROSMain_features
bool ROSMain_features() {
CoSLAM& coSLAM = MyApp::coSLAM;
/////////////////////////1.GPU initilization/////////////////////////
//initialization for CG;
glutInitDisplayMode(GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);
glutCreateWindow(" ");
glutHideWindow();
glewInit();
V3D_GPU::Cg_ProgramBase::initializeCg();
//////////////////////////2.read video information//////////////////
try {
// for(int c = 0; c < coSLAM.numCams; c++){
// coSLAM.slam[c].videoReader = &MyApp::aviReader[c];
// }
coSLAM.init(false);
MyApp::bInitSucc = true;
logInfo("Loading video sequences.. OK!\n");
} catch (SL_Exception& e) {
logInfo(e.what());
#ifdef WIN32
wxMessageBox(e.what());
#endif
return 0;
}
//notify the GUI thread to create GUIs
MyApp::broadcastCreateGUI();
//wait for the accomplishment of creating GUIs
MyApp::waitCreateGUI();
for (int i = 0; i < coSLAM.numCams; i++){
MyApp::videoWnd[i]->setSLAMData(i, &coSLAM);
vector<float> reprojErrStatic, reprojErrDynamic;
vector<int> frameNumber;
MyApp::s_reprojErrDynamic.push_back(reprojErrStatic);
MyApp::s_reprojErrStatic.push_back(reprojErrDynamic);
MyApp::s_frameNumber.push_back(frameNumber);
}
MyApp::modelWnd1->setSLAMData(&coSLAM);
MyApp::modelWnd2->setSLAMData(&coSLAM);
MyApp::broadcastCreateGUI();
//for measuring the timings
Timings timingsPerStep;
Timings timingsReadFrame;
Timings timingsNewMapPonits;
/* start the SLAM process*/
try {
coSLAM.readFrame();
//copy the data to buffers for display
updateDisplayData();
//initialise the map points
for (int i = 0; i < coSLAM.numCams; i++) {
printf("slam[%d].m_camPos.size(): %d\n", i, coSLAM.slam[i].m_camPos.size());
}
// tic();
// coSLAM.initMap();
// toc();
cout <<"debug\n";
// redis->setPose(1, 2, 3.6);
while (!MyApp::bExit){
pthread_mutex_lock(&MyApp::_mutexImg);
if (!coSLAM.grabReadFrame())
pthread_cond_wait(&MyApp::_condImg, &MyApp::_mutexImg);
pthread_mutex_unlock(&MyApp::_mutexImg);
// //copy the data to buffers for display
updateDisplayData();
//printf("current frame: %d\n", coSLAM.curFrame);
if (MyApp::bStartInit){
MyApp::publishMapInit();
printf("Start initializing map...\n");
coSLAM.curFrame = 0;
//initialise the map points
if (coSLAM.initMap()){
// Need this in real test
coSLAM.calibGlobal2Cam();
// return 0;
for (int i = 0; i < coSLAM.numCams; i++)
coSLAM.state[i] = SLAM_STATE_NORMAL;
printf("Init map success!\n");
break;
}
else{
MyApp::bStartInit = false;
MyApp::publishMapInit();
}
}
//.........这里部分代码省略.........
示例2: main
int main(int argc, char *argv[])
{
SDL_Surface *screen;
if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) {
printf("Unable to initialize SDL: %s\n", SDL_GetError());
return 1;
}
SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 );
screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL );
if ( !screen ) {
printf("Unable to set video mode: %s\n", SDL_GetError());
return 1;
}
glClearColor( 0, 0, 0, 0 );
glClear( GL_COLOR_BUFFER_BIT );
// Fog
glEnable(GL_FOG);
glFogf(GL_FOG_START, 100);
glFogf(GL_FOG_END, 2000);
glFogi(GL_FOG_MODE, GL_LINEAR);
GLfloat fogcolor[4] = { 0.9, 0.1, 0.35, 0 };
glFogfv(GL_FOG_COLOR, fogcolor);
// Create a texture
GLuint texture;
glGenTextures( 1, &texture );
glBindTexture( GL_TEXTURE_2D, texture );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
GLubyte textureData[16*16*4];
for (int x = 0; x < 16; x++) {
for (int y = 0; y < 16; y++) {
*((int*)&textureData[(x*16 + y) * 4]) = x*16 + ((y*16) << 8);
}
}
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0,
GL_RGBA, GL_UNSIGNED_BYTE, textureData );
// Create a second texture
GLuint texture2;
glGenTextures( 1, &texture2 );
glBindTexture( GL_TEXTURE_2D, texture2 );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
GLubyte texture2Data[] = { 0xff, 0, 0, 0xff,
0, 0xff, 0, 0xaa,
0, 0, 0xff, 0x55,
0x80, 0x90, 0x70, 0 };
glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, 2, 2, 0,
GL_RGBA, GL_UNSIGNED_BYTE, texture2Data );
// BEGIN
#if USE_GLEW
glewInit();
#endif
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// original: glFrustum(-0.6435469817188064, 0.6435469817188064 ,-0.48266022190470925, 0.48266022190470925 ,0.5400000214576721, 2048);
glFrustum(-0.6435469817188064, 0.1435469817188064 ,-0.48266022190470925, 0.88266022190470925 ,0.5400000214576721, 2048);
glRotatef(-30, 1, 1, 1);
//GLfloat pm[] = { 1.372136116027832, 0, 0, 0, 0, 0.7910231351852417, 0, 0, -0.6352481842041016, 0.29297152161598206, -1.0005275011062622, -1, 0, 0, -1.080284833908081, 0 };
//glLoadMatrixf(pm);
glMatrixMode(GL_MODELVIEW);
GLfloat matrixData[] = { -1, 0, 0, 0,
0, 0,-1, 0,
0, 1, 0, 0,
0, 0, 0, 1 };
glLoadMatrixf(matrixData);
//glTranslated(-512,-512,-527); // XXX this should be uncommented, but if it is then nothing is shown
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glClear(GL_DEPTH_BUFFER_BIT);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glActiveTexture(GL_TEXTURE0);
glEnableClientState(GL_VERTEX_ARRAY);
GLuint arrayBuffer, elementBuffer;
glGenBuffers(1, &arrayBuffer);
glGenBuffers(1, &elementBuffer);
GLubyte arrayData[] = {
/*
[0, 0, 0, 67] ==> 128 float
[0, 0, 128, 67] ==> 256 float
//.........这里部分代码省略.........
示例3: main
int main( int argc, char **argv )
{
// Parse the arguments
if (argc < 3) {
printf("Missing arguments ... use:\n");
printf("./raycast [-u | -d] step_max <options>\n");
return -1;
}
step_max = atoi(argv[2]); // maximum level of recursions
// Optional arguments
for(int i = 3; i < argc; i++)
{
if (strcmp(argv[i], "+s") == 0) shadow_on = 1;
if (strcmp(argv[i], "+p") == 0) antialias_on = 1;
if (strcmp(argv[i], "+r") == 0) refract_on = 1;
if (strcmp(argv[i], "+c") == 0) check_on = 1;
if (strcmp(argv[i], "+l") == 0) reflect_on = 1;
if (strcmp(argv[i], "+n") == 0) save_on = 1;
if (strcmp(argv[i], "+f") == 0) stochdiff_on = 1;
}
if (strcmp(argv[1], "-u") == 0) { // user defined scene
set_up_user_scene();
}else if (strcmp(argv[1], "-c") == 0) { // user defined scene
set_up_chess_scene();
} else { // default scene
set_up_default_scene();
}
//
// ray trace the scene now
//
// we have used so many global variables and this function is
// happy to carry no parameters
//
printf("Rendering scene using my fantastic ray tracer ...\n");
ray_trace();
if (save_on) {
save_image();
return 0;
}
// we want to make sure that intensity values are normalized
//histogram_normalization();
// Show the result in glut via texture mapping
glutInit( &argc, argv );
glutInitDisplayMode( GLUT_RGBA | GLUT_DOUBLE );
glutInitWindowSize( WIN_WIDTH, WIN_HEIGHT );
glutCreateWindow( "Ray tracing" );
glewInit();
init();
glutDisplayFunc( display );
glutKeyboardFunc( keyboard );
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
示例4: sizeof
RenderingContext::RenderingContext(CML::CMWindow *window)
{
PIXELFORMATDESCRIPTOR pfd =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags
PFD_TYPE_RGBA, //The kind of framebuffer. RGBA or palette.
24, //Colordepth of the framebuffer.
24, //Number of bits for the depthbuffer
8, //Number of bits for the stencilbuffer
0, //Number of Aux buffers in the framebuffer.
PFD_MAIN_PLANE
};
WORD nSize = sizeof(PIXELFORMATDESCRIPTOR);
WORD nVersion = 1;
DWORD dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
pfd.iPixelType = PFD_TYPE_RGBA;
pfd.cColorBits = 24;
pfd.cRedBits = 0;
pfd.cRedShift = 0;
pfd.cGreenBits = 0;
pfd.cGreenShift = 0;
pfd.cBlueBits = 0;
pfd.cBlueShift = 0;
pfd.cAlphaBits = 0;
pfd.cAlphaShift = 0;
pfd.cAccumBits = 0;
pfd.cAccumRedBits = 0;
pfd.cAccumGreenBits = 0;
pfd.cAccumBlueBits = 0;
pfd.cAccumAlphaBits = 0;
pfd.cDepthBits = 24;
pfd.cStencilBits = 8;
pfd.cAuxBuffers = 0;
pfd.iLayerType = 0;
pfd.bReserved = 0;
DWORD dwLayerMask = NULL;
DWORD dwVisibleMask = NULL;
DWORD dwDamageMask = NULL;
_window = window;
HDC ourWindowHandleToDeviceContext = GetDC(window->CMWindowHandle());//
g_HDC = ourWindowHandleToDeviceContext;
int letWindowsChooseThisPixelFormat;
letWindowsChooseThisPixelFormat = ChoosePixelFormat(ourWindowHandleToDeviceContext, &pfd);
SetPixelFormat(ourWindowHandleToDeviceContext, letWindowsChooseThisPixelFormat, &pfd);
renderingContext = wglCreateContext(ourWindowHandleToDeviceContext);
wglMakeCurrent(ourWindowHandleToDeviceContext, renderingContext);
glewInit();
_program = glCreateProgram();
createVertexShader();
createFragmentShader();
}
示例5: InitOpenGL
void InitOpenGL(void){
int type;
int err;
PRINTF("%s",_("Initializing OpenGL\n"));
type = GLUT_RGB|GLUT_DEPTH;
if(buffertype==GLUT_DOUBLE){
type |= GLUT_DOUBLE;
}
else{
type |= GLUT_SINGLE;
}
// glutInitDisplayMode(GLUT_STEREO);
if(stereoactive==1){
if(glutGet(GLUT_DISPLAY_MODE_POSSIBLE)==1){
videoSTEREO=1;
type |= GLUT_STEREO;
}
else{
videoSTEREO=0;
fprintf(stderr,"*** Error: video hardware does not support stereo\n");
}
}
#ifdef _DEBUG
PRINTF("%s",_(" Initializing Glut display mode - "));
#endif
glutInitDisplayMode(type);
#ifdef _DEBUG
PRINTF("%s\n",_("initialized"));
#endif
CheckMemory;
#ifdef _DEBUG
PRINTF("%s\n",_(" creating window"));
#endif
mainwindow_id=glutCreateWindow("");
#ifdef _DEBUG
PRINTF("%s\n",_(" window created"));
#endif
#ifdef _DEBUG
PRINTF("%s",_(" Initializing callbacks - "));
#endif
glutSpecialUpFunc(specialkeyboard_up_CB);
glutKeyboardUpFunc(keyboard_up_CB);
glutKeyboardFunc(keyboard_CB);
glutMouseFunc(mouse_CB);
glutSpecialFunc(specialkeyboard_CB);
glutMotionFunc(motion_CB);
glutReshapeFunc(Reshape_CB);
glutDisplayFunc(Display_CB);
glutVisibilityFunc(NULL);
glutMenuStatusFunc(MenuStatus_CB);
#ifdef _DEBUG
PRINTF("%s\n",_("initialized"));
#endif
opengl_version = get_opengl_version(opengl_version_label);
err=0;
#ifdef pp_GPU
err=glewInit();
if(err==GLEW_OK){
err=0;
}
else{
PRINTF(" GLEW initialization failed\n");
err=1;
}
if(err==0){
if(disable_gpu==1){
err=1;
}
else{
err=init_shaders();
}
#ifdef _DEBUG
if(err==0){
PRINTF("%s\n",_(" GPU shader initialization succeeded"));
}
#endif
if(err!=0){
PRINTF("%s\n",_(" GPU shader initialization failed"));
}
}
#endif
#ifdef pp_CULL
if(err==0){
err=init_cull_exts();
#ifdef _DEBUG
if(err==0){
PRINTF("%s\n",_(" Culling extension initialization succeeded"));
}
#endif
if(err!=0){
PRINTF("%s\n",_(" Culling extension initialization failed"));
}
//.........这里部分代码省略.........
示例6: main
int
main(int argc, char *argv[])
{
int x,y,width, height;
SDL_Window *win;
SDL_GLContext glContext;
NVGcontext *vg = NULL;
int running = 1;
unsigned int started;
unsigned int dt;
struct zr_user_font font;
struct file_browser browser;
const char *font_path;
int icon_sheet;
font_path = argv[1];
if (argc < 2)
die("missing argument!: <font> <icons>");
/* SDL */
SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_EVENTS);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
win = SDL_CreateWindow("File Explorer",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
WINDOW_WIDTH, WINDOW_HEIGHT, SDL_WINDOW_OPENGL|SDL_WINDOW_SHOWN);
glContext = SDL_GL_CreateContext(win);
SDL_GetWindowSize(win, &width, &height);
SDL_GetWindowPosition(win, &x, &y);
/* OpenGL */
glewExperimental = 1;
if (glewInit() != GLEW_OK)
die("[GLEW] failed setup\n");
glViewport(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);
/* nanovg */
vg = nvgCreateGLES2(NVG_ANTIALIAS|NVG_DEBUG);
if (!vg) die("[NVG]: failed to init\n");
nvgCreateFont(vg, "fixed", font_path);
nvgFontFace(vg, "fixed");
nvgFontSize(vg, 14);
nvgTextAlign(vg, NVG_ALIGN_LEFT|NVG_ALIGN_MIDDLE);
/* GUI */
memset(&browser, 0, sizeof browser);
font.userdata.ptr = vg;
nvgTextMetrics(vg, NULL, NULL, &font.height);
font.width = font_get_width;
file_browser_init(&browser, vg, &font, width, height);
while (running) {
/* Input */
SDL_Event evt;
started = SDL_GetTicks();
zr_input_begin(&browser.input);
while (SDL_PollEvent(&evt)) {
if (evt.type == SDL_WINDOWEVENT) resize(&evt);
else if (evt.type == SDL_QUIT) goto cleanup;
else if (evt.type == SDL_KEYUP) key(&browser.input, &evt, zr_false);
else if (evt.type == SDL_KEYDOWN) key(&browser.input, &evt, zr_true);
else if (evt.type == SDL_MOUSEBUTTONDOWN) btn(&browser.input, &evt, zr_true);
else if (evt.type == SDL_MOUSEBUTTONUP) btn(&browser.input, &evt, zr_false);
else if (evt.type == SDL_MOUSEMOTION) motion(&browser.input, &evt);
else if (evt.type == SDL_TEXTINPUT) text(&browser.input, &evt);
else if (evt.type == SDL_MOUSEWHEEL) zr_input_scroll(&browser.input, evt.wheel.y);
}
zr_input_end(&browser.input);
SDL_GetWindowSize(win, &width, &height);
running = file_browser_run(&browser, width, height);
/* Draw */
glClearColor(0.4f, 0.4f, 0.4f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
draw(vg, &browser.queue, width, height);
SDL_GL_SwapWindow(win);
}
cleanup:
/* Cleanup */
free(browser.memory);
nvgDeleteGLES2(vg);
SDL_GL_DeleteContext(glContext);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}
示例7: main
int main(int argc, char *argv[])
{
SDL_Init(SDL_INIT_VIDEO);
displayWindow = SDL_CreateWindow("My Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 360, SDL_WINDOW_OPENGL);
SDL_GLContext context = SDL_GL_CreateContext(displayWindow);
SDL_GL_MakeCurrent(displayWindow, context);
#ifdef _WINDOWS
glewInit();
#endif
SDL_Event event;
bool done = false;
glViewport(0, 0, 640, 360);
ShaderProgram program(RESOURCE_FOLDER"vertex_textured.glsl", RESOURCE_FOLDER"fragment_textured.glsl");
GLuint bluePaddleTexture = LoadTexture("blueRectangle.png");
GLuint greenPaddleTexture = LoadTexture("greenRectangle.png");
GLuint emojiTexture = LoadTexture("emoji3.png");
GLuint greenBallTexture = LoadTexture("greenCircle2.png");
Ball greenBall(0.25, 0.25);
Paddle greenPaddle(-3.35,0.5);
Paddle bluePaddle(3.35,0.5);
Matrix projectionMatrix;
Matrix modelMatrixbluePaddle;
Matrix modelMatrixgreenPaddle;
Matrix modelMatrixgreenBall;
Matrix viewMatrix;
Mix_OpenAudio(44100, MIX_DEFAULT_FORMAT, 2, 4096);
Mix_Chunk *someSound;
someSound = Mix_LoadWAV("ballSound.wav");
Mix_Music *music;
music = Mix_LoadMUS("music.mp3");
bool ballDown = true;
bool ballLeft = true;
projectionMatrix.setOrthoProjection(-3.55, 3.55, -2.0f, 2.0f, -1.0f, 1.0f);
glUseProgram(program.programID);
float lastFrameTicks = 0.0f;
Mix_PlayMusic(music, -1);
while (!done) {
while (SDL_PollEvent(&event)) {
if (event.type == SDL_QUIT || event.type == SDL_WINDOWEVENT_CLOSE) {
done = true;
}
}
float ticks = (float)SDL_GetTicks() / 1000.0f;
float elapsed = ticks - lastFrameTicks;
lastFrameTicks = ticks;
const Uint8 *keys = SDL_GetKeyboardState(NULL);
float vertices2[] = { 0, 0, 0.25, 0, 0.25, 0.25, 0, 0, 0.25, 0.25, 0, 0.25 };
//GreenPaddle
float vertices1[] = { -3.35f, -.5f, -3.2f, -.5f, -3.2f, .5f, -3.35f, -.5f, -3.2f, .5f, -3.35f, .5f };
float shiftX = 0;
float shiftY = 0;
shiftX += 0.5f * elapsed;
shiftY += 1.0f * elapsed;
if (greenPaddle.y < 1.5){
if (keys[SDL_SCANCODE_W]){
modelMatrixgreenPaddle.Translate(0, shiftY, 0);
greenPaddle.y += shiftY;
}
}
if (greenPaddle.y > -1.5){
if (keys[SDL_SCANCODE_S])
{
modelMatrixgreenPaddle.Translate(0, -shiftY, 0);
greenPaddle.y -= shiftY;
}
}
if (bluePaddle.y < 1.5){
if (keys[SDL_SCANCODE_UP]){
modelMatrixbluePaddle.Translate(0, shiftY, 0);
bluePaddle.y += shiftY;
}
}
if (bluePaddle.y > -1.5) {
if (keys[SDL_SCANCODE_DOWN])
{
modelMatrixbluePaddle.Translate(0, -shiftY, 0);
bluePaddle.y -= shiftY;
}
}
if (keys[SDL_SCANCODE_R])
modelMatrixgreenBall.setPosition(0.5, 0.5, 0);
if (greenBall.y >= 1.5)
{
ballDown = true;
Mix_PlayChannel(-1, someSound, 0);
//.........这里部分代码省略.........
示例8: main
int main(int argc, char *argv[])
{
//start context
if (!glfwInit())
{
fprintf(stderr, "Error, could not start GLFW3\n");
return 1;
}
else
{
fprintf(stderr, "GLFW initialized properly.");
}
//Forward compatibility from version 3.2.
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_SAMPLES, 4); //Anti aliasing (4 passes)
//start logs
Logger::restartLog(GL_LOG_FILE);
glfwSetErrorCallback(glfwErrorCallback);
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
//init window with primary monitor resolution
//Set these modes for a fullscreen window and don't for classic fullscreen:
/*glfwWindowHint(GLFW_RED_BITS, mode->redBits);
glfwWindowHint(GLFW_GREEN_BITS, mode->greenBits);
glfwWindowHint(GLFW_BLUE_BITS, mode->blueBits);
glfwWindowHint(GLFW_REFRESH_RATE, mode->refreshRate);*/
//------------------------------------------------
//GLFWwindow * window = glfwCreateWindow(mode->width, mode->height, "Tutorial 1: Draw a triangle", monitor, NULL); //Fullscreen
GLFWwindow * window = glfwCreateWindow(800, 600, "Tutorial 1: Draw a triangle", NULL, NULL); //Not Fullscreen
//if window initialisation failed
if (!window)
{
fprintf(stderr, "Could not open window with GLFW3\n");
glfwTerminate();
return 1;
}
glfwMakeContextCurrent(window);
glfwSetWindowSizeCallback(window, glfwWindowSizeCallback);
//start glew extension handler;
glewExperimental = GL_TRUE;
glewInit();
//get version info
const GLubyte * renderer = glGetString(GL_RENDERER);
const GLubyte * version = glGetString(GL_VERSION);
//Log informations
Logger::printToLog(GL_LOG_FILE, "Starting GLFW: %s \n", glfwGetVersionString());
logGlParams();
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);
//draw triangle
initTriangles();
Shader vertex = Shader("vertex.vert", GL_VERTEX_SHADER);
Shader frag_1 = Shader("frag1.frag", GL_FRAGMENT_SHADER);
Shader frag_2 = Shader("frag2.frag", GL_FRAGMENT_SHADER);
Shader shaders_1[2] = { vertex, frag_1 };
Shader shaders_2[2] = { vertex, frag_2 };
ShaderProgram shader_programme_1 = ShaderProgram(shaders_1, VERT_FRAG);
ShaderProgram shader_programme_2 = ShaderProgram(shaders_2, VERT_FRAG);
while (!glfwWindowShouldClose(window)) {
updateFpsCounter(window);
// wipe the drawing surface clear
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glViewport(0, 0, g_gl_width, g_gl_height);
glClearColor(0.1f, 0.1f, 0.1f, 0.0f);
glUseProgram(shader_programme_1.get_program());
glBindVertexArray(vao_1);
// draw points 0-5 from the currently bound VAO with current in-use shader
glDrawArrays(GL_TRIANGLES, 0, 6);
glUseProgram(shader_programme_2.get_program());
glBindVertexArray(vao_2);
// draw points 0-5 from the currently bound VAO with current in-use shader
glDrawArrays(GL_TRIANGLES, 0, 3);
// update other events like input handling
glfwPollEvents();
//.........这里部分代码省略.........
示例9: glewInit
//============================================================
// <T>配置处理。</T>
//
// @return 处理结果
//============================================================
TResult FPoRenderDevice::Setup(){
// 父配置处理
TResult result = FRenderDevice::Setup();
//............................................................
#ifdef _MO_WINDOWS
// 初始化库
GLenum initResult = glewInit();
if(GLEW_OK != initResult){
const GLubyte* pReason = glewGetErrorString(initResult);
MO_FATAL("Initialize opengl glew library failure. (reason=%s)", pReason);
}
// 检查版本
if(glewIsSupported("GL_VERSION_2_0")){
MO_INFO("Initialize OpenGL library ready for OpenGL 2.0.");
}else{
MO_FATAL("Initialize OpenGL library not supported.");
}
#endif // _MO_WINDOWS
//............................................................
// 获得描述
const GLubyte* byteGlVersion = glGetString(GL_VERSION);
const GLubyte* byteGlVendor = glGetString(GL_VENDOR);
const GLubyte* byteGlRenderer = glGetString(GL_RENDERER);
const GLubyte* byteSLVersion = glGetString(GL_SHADING_LANGUAGE_VERSION);
const GLubyte* byteExtensions = glGetString(GL_EXTENSIONS);
MO_INFO("OpenGL setup. (Version : %s)", byteGlVersion);
MO_INFO("OpenGL setup. (Vendor : %s)", byteGlVendor);
MO_INFO("OpenGL setup. (Render : %s)", byteGlRenderer);
MO_INFO("OpenGL setup. (GLSL : %s)", byteSLVersion);
MO_INFO("OpenGL setup. (Extensions : %s)", byteExtensions);
// 获得限制
TInt vertexConstLimit = GlRenderGetInteger(GL_MAX_VERTEX_UNIFORM_VECTORS);
TInt fragmentConstLimit = GlRenderGetInteger(GL_MAX_FRAGMENT_UNIFORM_VECTORS);
#ifndef _MO_ANDROID
_pCapability->SetRenderTargetLimit(GlRenderGetInteger(GL_MAX_DRAW_BUFFERS));
//_pCapability->SetVertexConstLimit(GlRenderGetInteger(GL_MAX_VERTEX_UNIFORM_COMPONENTS) / 4);
//_pCapability->SetFragmentConstLimit(GlRenderGetInteger(GL_MAX_FRAGMENT_UNIFORM_COMPONENTS) / 4);
#else
//vertexConstLimit = MO_LIB_MIN(vertexConstLimit, 256);
//fragmentConstLimit = MO_LIB_MIN(fragmentConstLimit, 256);
#endif // _MO_ANDROID
_pCapability->SetVertexConstLimit(vertexConstLimit);
_pCapability->SetVertexAttributeLimit(GlRenderGetInteger(GL_MAX_VERTEX_ATTRIBS));
_pCapability->SetFragmentConstLimit(fragmentConstLimit);
_pCapability->SetVaryingLimit(GlRenderGetInteger(GL_MAX_VARYING_VECTORS));
_pCapability->SetSamplerLimit(GlRenderGetInteger(GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS));
_pCapability->SetSamplerSizeLimit(GlRenderGetInteger(GL_MAX_TEXTURE_SIZE));
_pCapability->Track();
//MO_INFO("GL_MAX_VARYING_FLOATS=%d", GlRenderGetInteger(GL_MAX_VARYING_FLOATS));
MO_INFO("GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS=%d", GlRenderGetInteger(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS));
MO_INFO("GL_MAX_TEXTURE_IMAGE_UNITS=%d", GlRenderGetInteger(GL_MAX_TEXTURE_IMAGE_UNITS));
//MO_INFO("GL_MAX_DRAW_BUFFERS=%d", GlRenderGetInteger(GL_MAX_DRAW_BUFFERS));
//MO_INFO("GL_MAX_TEXTURE_UNITS=%d", GlRenderGetInteger(GL_MAX_TEXTURE_UNITS));
//............................................................
// 设置数据
TInt vertexConstTotal = sizeof(SFloat4) * _pCapability->VertexConstLimit();
_pVertexConsts->ForceLength(vertexConstTotal);
RMemory::Clear(_pVertexConsts->Memory(), _pVertexConsts->Length());
TInt fragmentConstTotal = sizeof(SFloat4) * _pCapability->FragmentConstLimit();
_pFragmentConsts->ForceLength(fragmentConstTotal);
RMemory::Clear(_pFragmentConsts->Memory(), _pFragmentConsts->Length());
//............................................................
// 设置脚本处理器
_shaderTransformer = FPoRenderShaderTransformer::InstanceCreate();
_shaderOptimizer = FPoRenderShaderOptimizer::InstanceCreate();
//............................................................
// GL_CCW表示逆时针为背面
// glFrontFace(GL_CCW);
return ESuccess;
}
示例10: glewInit
void SplatRenderer::init(QGLWidget *qglw)
{
mIsSupported = true;
if(qglw)
qglw->makeCurrent();
glewInit();
const char* rs = (const char*)glGetString(GL_RENDERER);
QString rendererString("");
if(rs)
rendererString = QString(rs);
mWorkaroundATI = rendererString.startsWith("ATI") || rendererString.startsWith("AMD");
// FIXME: maybe some recent HW correctly supports floating point blending...
mBuggedAtiBlending = rendererString.startsWith("ATI") || rendererString.startsWith("AMD");
if (mWorkaroundATI && mDummyTexId==0)
{
glActiveTexture(GL_TEXTURE0);
glGenTextures(1,&mDummyTexId);
glBindTexture(GL_TEXTURE_2D, mDummyTexId);
glTexImage2D(GL_TEXTURE_2D, 0, GL_LUMINANCE, 4, 4, 0, GL_LUMINANCE, GL_UNSIGNED_BYTE, 0);
}
// let's check the GPU capabilities
mSupportedMask = DEPTH_CORRECTION_BIT | BACKFACE_SHADING_BIT;
if (!QGLFramebufferObject::hasOpenGLFramebufferObjects ())
{
std::cout << "SplatRenderer: error OpenGL frame buffer objects are not supported. (please, try to update your drivers)\n";
mIsSupported = false;
return;
}
if (GLEW_ARB_texture_float)
mSupportedMask |= FLOAT_BUFFER_BIT;
else
std::cout << "SplatRenderer: warning floating point textures are not supported.\n";
if (GLEW_ARB_draw_buffers && (!mBuggedAtiBlending))
mSupportedMask |= DEFERRED_SHADING_BIT;
else
std::cout << "SplatRenderer: warning deferred shading is not supported.\n";
if (GLEW_ARB_shadow)
mSupportedMask |= OUTPUT_DEPTH_BIT;
else
std::cerr << "SplatRenderer: warning copy of the depth buffer is not supported.\n";
mFlags = mFlags & mSupportedMask;
// load shader source
mShaderSrcs[0] = loadSource("VisibilityVP","Raycasting.glsl");
mShaderSrcs[1] = loadSource("VisibilityFP","Raycasting.glsl");
mShaderSrcs[2] = loadSource("AttributeVP","Raycasting.glsl");
mShaderSrcs[3] = loadSource("AttributeFP","Raycasting.glsl");
mShaderSrcs[4] = "";
mShaderSrcs[5] = loadSource("Finalization","Finalization.glsl");
mCurrentPass = 2;
mBindedPass = -1;
mIsInitialized = true;
GL_TEST_ERR
}
示例11: main
int main(int argc, char **argv) {
srand(time(NULL));
rand();
if (argc == 2 || argc == 3) {
char *hostname = argv[1];
int port = DEFAULT_PORT;
if (argc == 3) {
port = atoi(argv[2]);
}
db_disable();
client_enable();
client_connect(hostname, port);
client_start();
}
if (!glfwInit()) {
return -1;
}
create_window();
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
glfwSwapInterval(VSYNC);
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
glfwSetKeyCallback(window, on_key);
glfwSetMouseButtonCallback(window, on_mouse_button);
glfwSetScrollCallback(window, on_scroll);
#ifndef __APPLE__
if (glewInit() != GLEW_OK) {
return -1;
}
#endif
if (db_init()) {
return -1;
}
glEnable(GL_CULL_FACE);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LINE_SMOOTH);
glLogicOp(GL_INVERT);
glClearColor(0.53, 0.81, 0.92, 1.00);
GLuint texture;
glGenTextures(1, &texture);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
load_png_texture("texture.png");
GLuint block_program = load_program(
"shaders/block_vertex.glsl", "shaders/block_fragment.glsl");
GLuint matrix_loc = glGetUniformLocation(block_program, "matrix");
GLuint camera_loc = glGetUniformLocation(block_program, "camera");
GLuint sampler_loc = glGetUniformLocation(block_program, "sampler");
GLuint timer_loc = glGetUniformLocation(block_program, "timer");
GLuint position_loc = glGetAttribLocation(block_program, "position");
GLuint normal_loc = glGetAttribLocation(block_program, "normal");
GLuint uv_loc = glGetAttribLocation(block_program, "uv");
GLuint line_program = load_program(
"shaders/line_vertex.glsl", "shaders/line_fragment.glsl");
GLuint line_matrix_loc = glGetUniformLocation(line_program, "matrix");
GLuint line_position_loc = glGetAttribLocation(line_program, "position");
GLuint item_position_buffer = 0;
GLuint item_normal_buffer = 0;
GLuint item_uv_buffer = 0;
int previous_block_type = 0;
Chunk chunks[MAX_CHUNKS];
int chunk_count = 0;
Player players[MAX_PLAYERS];
int player_count = 0;
FPS fps = {0, 0};
float matrix[16];
float x = (rand_double() - 0.5) * 10000;
float z = (rand_double() - 0.5) * 10000;
float y = 0;
float dy = 0;
float rx = 0;
float ry = 0;
double px = 0;
double py = 0;
int loaded = db_load_state(&x, &y, &z, &rx, &ry);
ensure_chunks(chunks, &chunk_count, x, y, z, 1);
if (!loaded) {
y = highest_block(chunks, chunk_count, x, z) + 2;
}
glfwGetCursorPos(window, &px, &py);
double previous = glfwGetTime();
while (!glfwWindowShouldClose(window)) {
int width, height;
//.........这里部分代码省略.........
示例12: initSDL
/* inits sdl and creates an opengl window */
static void initSDL(VideoMode *video) {
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO | SDL_INIT_JOYSTICK | SDL_INIT_GAMECONTROLLER) < 0) {
LOGE("Failed to init SDL2: %s", SDL_GetError());
exit(1);
}
#ifdef _WIN32
float ddpi;
if (!SDL_GetDisplayDPI(0, &ddpi, nullptr, nullptr)) {
const float WINDOWS_DEFAULT_DPI = 96.0f;
video->pixel_scale = ddpi / WINDOWS_DEFAULT_DPI;
}
#endif
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
//SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 1);
//SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 4);
#ifdef EMSCRIPTEN
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_ES);
#else
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 1);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,
SDL_GL_CONTEXT_PROFILE_COMPATIBILITY);
#endif
int window_flags =
SDL_WINDOW_SHOWN
| SDL_WINDOW_RESIZABLE
| SDL_WINDOW_OPENGL
| SDL_WINDOW_ALLOW_HIGHDPI;
if (video->fullscreen) window_flags |= SDL_WINDOW_FULLSCREEN_DESKTOP;
sdl_window = SDL_CreateWindow(WINDOW_TITLE,
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
video->pixel_scale * video->width, video->pixel_scale * video->height,
window_flags);
if (!sdl_window) {
LOGE("Failed to create an OpenGL window: %s", SDL_GetError());
exit(1);
}
sdl_gl_context = SDL_GL_CreateContext(sdl_window);
if (!sdl_gl_context) {
LOGE("Failed to create an OpenGL context: %s", SDL_GetError());
exit(1);
}
int drawable_width, drawable_height;
SDL_GL_GetDrawableSize(sdl_window, &drawable_width, &drawable_height);
if (drawable_width != video->width) {
LOGI("Created high DPI window. (%dx%d)", drawable_width, drawable_height);
video->pixel_scale = (float)drawable_width / (float)video->width;
} else {
video->pixel_scale = 1.0f;
}
if (SDL_GL_SetSwapInterval(1) == -1) { // sync with monitor refresh rate
LOGW("Could not enable VSync.");
}
#ifndef __APPLE__
glewInit();
#endif
}
示例13: screenInitialise
/* Initialise the double buffered display */
bool screenInitialise()
{
GLint glMaxTUs;
GLenum err;
glErrors();
err = glewInit();
if (GLEW_OK != err)
{
debug(LOG_FATAL, "Error: %s", glewGetErrorString(err));
exit(1);
}
/* Dump general information about OpenGL implementation to the console and the dump file */
ssprintf(opengl.vendor, "OpenGL Vendor: %s", glGetString(GL_VENDOR));
addDumpInfo(opengl.vendor);
debug(LOG_3D, "%s", opengl.vendor);
ssprintf(opengl.renderer, "OpenGL Renderer: %s", glGetString(GL_RENDERER));
addDumpInfo(opengl.renderer);
debug(LOG_3D, "%s", opengl.renderer);
ssprintf(opengl.version, "OpenGL Version: %s", glGetString(GL_VERSION));
addDumpInfo(opengl.version);
debug(LOG_3D, "%s", opengl.version);
ssprintf(opengl.GLEWversion, "GLEW Version: %s", glewGetString(GLEW_VERSION));
if (strncmp(opengl.GLEWversion, "1.9.", 4) == 0) // work around known bug with KHR_debug extension support in this release
{
debug(LOG_WARNING, "Your version of GLEW is old and buggy, please upgrade to at least version 1.10.");
khr_debug = false;
}
else
{
khr_debug = GLEW_KHR_debug;
}
addDumpInfo(opengl.GLEWversion);
debug(LOG_3D, "%s", opengl.GLEWversion);
GLubyte const *extensionsBegin = glGetString(GL_EXTENSIONS);
if (extensionsBegin == nullptr)
{
static GLubyte const emptyString[] = "";
extensionsBegin = emptyString;
}
GLubyte const *extensionsEnd = extensionsBegin + strlen((char const *)extensionsBegin);
std::vector<std::string> glExtensions;
for (GLubyte const *i = extensionsBegin; i < extensionsEnd;)
{
GLubyte const *j = std::find(i, extensionsEnd, ' ');
glExtensions.push_back(std::string(i, j));
i = j + 1;
}
/* Dump extended information about OpenGL implementation to the console */
std::string line;
for (unsigned n = 0; n < glExtensions.size(); ++n)
{
std::string word = " ";
word += glExtensions[n];
if (n + 1 != glExtensions.size())
{
word += ',';
}
if (line.size() + word.size() > 160)
{
debug(LOG_3D, "OpenGL Extensions:%s", line.c_str());
line.clear();
}
line += word;
}
debug(LOG_3D, "OpenGL Extensions:%s", line.c_str());
debug(LOG_3D, "Notable OpenGL features:");
debug(LOG_3D, " * OpenGL 1.2 %s supported!", GLEW_VERSION_1_2 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 1.3 %s supported!", GLEW_VERSION_1_3 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 1.4 %s supported!", GLEW_VERSION_1_4 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 1.5 %s supported!", GLEW_VERSION_1_5 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 2.0 %s supported!", GLEW_VERSION_2_0 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 2.1 %s supported!", GLEW_VERSION_2_1 ? "is" : "is NOT");
debug(LOG_3D, " * OpenGL 3.0 %s supported!", GLEW_VERSION_3_0 ? "is" : "is NOT");
debug(LOG_3D, " * Texture compression %s supported.", GLEW_ARB_texture_compression ? "is" : "is NOT");
debug(LOG_3D, " * Two side stencil %s supported.", GLEW_EXT_stencil_two_side ? "is" : "is NOT");
debug(LOG_3D, " * ATI separate stencil is%s supported.", GLEW_ATI_separate_stencil ? "" : " NOT");
debug(LOG_3D, " * Stencil wrap %s supported.", GLEW_EXT_stencil_wrap ? "is" : "is NOT");
debug(LOG_3D, " * Anisotropic filtering %s supported.", GLEW_EXT_texture_filter_anisotropic ? "is" : "is NOT");
debug(LOG_3D, " * Rectangular texture %s supported.", GLEW_ARB_texture_rectangle ? "is" : "is NOT");
debug(LOG_3D, " * FrameBuffer Object (FBO) %s supported.", GLEW_EXT_framebuffer_object ? "is" : "is NOT");
debug(LOG_3D, " * ARB Vertex Buffer Object (VBO) %s supported.", GLEW_ARB_vertex_buffer_object ? "is" : "is NOT");
debug(LOG_3D, " * NPOT %s supported.", GLEW_ARB_texture_non_power_of_two ? "is" : "is NOT");
debug(LOG_3D, " * texture cube_map %s supported.", GLEW_ARB_texture_cube_map ? "is" : "is NOT");
glGetIntegerv(GL_MAX_TEXTURE_UNITS, &glMaxTUs);
debug(LOG_3D, " * Total number of Texture Units (TUs) supported is %d.", (int) glMaxTUs);
debug(LOG_3D, " * GL_ARB_timer_query %s supported!", GLEW_ARB_timer_query ? "is" : "is NOT");
debug(LOG_3D, " * KHR_DEBUG support %s detected", khr_debug ? "was" : "was NOT");
if (!GLEW_VERSION_2_0)
{
debug(LOG_FATAL, "OpenGL 2.0 not supported! Please upgrade your drivers.");
return false;
}
//.........这里部分代码省略.........
示例14: main
int main () {
// Initialize GLFW
if ( !glfwInit()) {
std::cerr << "Failed to initialize GLFW! I'm out!" << std::endl;
exit(-1);
}
// Use OpenGL 3.2 core profile
/*
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
*/
// Open a window and attach an OpenGL rendering context to the window surface
if( !glfwOpenWindow(800, 600, 8, 8, 8, 0, 0, 0, GLFW_WINDOW)) {
std::cerr << "Failed to open a window! I'm out!" << std::endl;
glfwTerminate();
exit(-1);
}
// Register a callback function for window resize events
glfwSetWindowSizeCallback( window_resized );
// Register a callback function for keyboard pressed events
glfwSetKeyCallback(keyboard);
// Print the OpenGL version
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
std::cout << "OpenGL - " << major << "." << minor << "." << rev << std::endl;
// Initialize GLEW
glewExperimental = GL_TRUE;
if(glewInit() != GLEW_OK) {
std::cerr << "Failed to initialize GLEW! I'm out!" << std::endl;
glfwTerminate();
exit(-1);
}
// Create a vertex array object
GLuint vao;
// Initialize the data to be rendered
initialize(vao);
// Create a rendering loop
int running = GL_TRUE;
while(running) {
// Display scene
display(vao);
// Pool for events
glfwPollEvents();
// Check if the window was closed
running = glfwGetWindowParam(GLFW_OPENED);
}
// Terminate GLFW
glfwTerminate();
return 0;
}
示例15: main
int main(int argc, char** argv)
{
//! The pointer to the GLFW window
GLFWwindow* window;
//! Setting up the GLFW Error callback
glfwSetErrorCallback(csX75::error_callback);
//! Initialize GLFW
if (!glfwInit())
return -1;
//We want OpenGL 4.0
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
//This is for MacOSX - can be omitted otherwise
//glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
//We don't want the old OpenGL
//glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
//! Create a windowed mode window and its OpenGL context
window = glfwCreateWindow(720, 720, "Assignment3:Star Wars", NULL, NULL);
if (!window)
{
glfwTerminate();
return -1;
}
//! Make the window's context current
glfwMakeContextCurrent(window);
//Initialize GLEW
//Turn this on to get Shader based OpenGL
glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (GLEW_OK != err)
{
//Problem: glewInit failed, something is seriously wrong.
std::cerr<<"GLEW Init Failed : %s"<<std::endl;
}
//Keyboard Callback
glfwSetKeyCallback(window, csX75::key_callback);
//Framebuffer resize callback
glfwSetFramebufferSizeCallback(window, csX75::framebuffer_size_callback);
// Ensure we can capture the escape key being pressed below
//glfwSetInputMode(window, GLFW_STICKY_KEYS, GL_TRUE);
glfwSetInputMode(window, GLFW_STICKY_MOUSE_BUTTONS, GL_TRUE);
//glfwSetCursorPosCallback(window, csX75::cursor_callback);
//Initialize GL state
csX75::initGL();
initBuffersGL();
// Loop until the user closes the window
while (glfwWindowShouldClose(window) == 0)
{
// Render here
renderGL();
// Swap front and back buffers
glfwSwapBuffers(window);
// Poll for and process events
glfwPollEvents();
}
glfwTerminate();
return 0;
}