cal*_*kon 1 c++ opengl glew glfw
我正在使用这里找到的教程.我正在使用GLFW.我的窗口加载正常,但在打电话时
GLuint vertexBuffer;
glGenBuffers( 1, &vertexBuffer );
printf( "%u\n", vertexBuffer );
Run Code Online (Sandbox Code Playgroud)
它不是写入控制台,如果我关闭openGL窗口它会中断(不是我关闭控制台).我猜这指针有问题吗?但对我来说似乎是正确的,而且正如他在教程中所拥有的那样.
这是我的整个,非常小的.cpp(VS2012):
#define GLEW_STATIC
#include <GL/glew.h>
#include <GL/glfw.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment( lib, "glfw.lib")
#pragma comment( lib, "opengl32.lib")
#pragma comment( lib, "glew32s.lib")
int main() {
glfwInit();
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MAJOR, 3 );
glfwOpenWindowHint( GLFW_OPENGL_VERSION_MINOR, 2 );
glfwOpenWindowHint( GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE );
glfwOpenWindowHint( GLFW_WINDOW_NO_RESIZE, GL_TRUE );
glfwOpenWindow( 800, 600, 0, 0, 0, 0, 0, 0, GLFW_WINDOW );
glfwSetWindowTitle( "OpenGL" );
printf("This works");
while( glfwGetWindowParam( GLFW_OPENED ) ) {
glfwSwapBuffers();
}
glewExperimental = GL_TRUE;
glewInit();
GLuint vertexBuffer;
glGenBuffers( 1, &vertexBuffer );
printf( "%u\n", vertexBuffer );
glfwTerminate();
exit( EXIT_SUCCESS );
}
Run Code Online (Sandbox Code Playgroud)
它无法将其写入控制台,因为永远不会到达相关代码.
只要窗口打开,代码就会运行几乎无限的while循环.
while(glfwGetWindowParam(GLFW_OPENED))
{
glfwSwapBuffers();
}
Run Code Online (Sandbox Code Playgroud)
您应该在此循环之前放置所有初始化代码.
glewExperimental = GL_TRUE;
glewInit();
Run Code Online (Sandbox Code Playgroud)
并在循环之前或循环中创建缓冲区对象.实际上,当您要将新内容加载到现有场景时,您将在循环内创建缓冲区对象.
GLuint vertexBuffer;
glGenBuffers(1, &vertexBuffer);
printf("%u\n", vertexBuffer);
Run Code Online (Sandbox Code Playgroud)
您的最终main功能可能如下所示.
int main()
{
// GLFW initialization
glfwInit();
// ...
glfwOpenWindow(800, 600, 0, 0, 0, 0, 0, 0, GLFW_WINDOW);
glfwSetWindowTitle("My first OpenGL Application");
// GLEW initialization
glewExperimental = GL_TRUE;
glewInit();
// vertex buffer
GLuint vertexBuffer;
glGenBuffers(1, &vertexBuffer);
printf("%u\n", vertexBuffer);
// main loop
bool running = true;
while(running) {
// exit
if (!glfwGetWindowParam(GLFW_OPENED))
running = false;
// display
glfwSwapBuffers();
}
// clean up
glfwTerminate();
exit(EXIT_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2137 次 |
| 最近记录: |