Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OpenGL交换缓冲区错误1282_Opengl_Freeglut - Fatal编程技术网

OpenGL交换缓冲区错误1282

OpenGL交换缓冲区错误1282,opengl,freeglut,Opengl,Freeglut,我最近购买了GTX 750 ti,并成功安装了353.38 nvidia驱动程序。当我创建OpenGL 3.3上下文时,如果调用glutSwapBuffers我会得到一个1282错误。 以下是资料来源: #include <iostream> using namespace std; #include "GL\glew.h" #include "GL\freeglut.h" void display() { glClear(GL_COLOR_BUFFER_BIT | G

我最近购买了GTX 750 ti,并成功安装了353.38 nvidia驱动程序。当我创建OpenGL 3.3上下文时,如果调用
glutSwapBuffers
我会得到一个1282错误。 以下是资料来源:

#include <iostream>
using namespace std;

#include "GL\glew.h"
#include "GL\freeglut.h"


void display()
{
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glutSwapBuffers();

    std::cout << glGetError() << std::endl; //<= 1282
}

int main (int argc, char* argv[])
{
    int OpenGLVersion[2];

    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitContextVersion(3, 3);
    glutInitContextFlags(GLUT_CORE_PROFILE);
    glutInitWindowPosition(100, 50);
    glutInitWindowSize(800, 600);
    glutCreateWindow("GL 3.3 Test");

    glewExperimental=TRUE;
    GLenum err = glewInit();
    if (err != GLEW_OK)
        return 1;

    while (glGetError()) { }

    cout << "OpenGL version = " << glGetString(GL_VERSION) << endl;

    glGetIntegerv(GL_MAJOR_VERSION, &OpenGLVersion[0]);
    glGetIntegerv(GL_MINOR_VERSION, &OpenGLVersion[1]);
    cout << "OpenGL major version = " <<OpenGLVersion[0] << endl;
    cout << "OpenGL minor version = " <<OpenGLVersion[1] << endl;

    glutDisplayFunc(display);

    glutMainLoop();

    return 0;
}
#包括
使用名称空间std;
#包括“GL\glew.h”
#包括“GL\freeglut.h”
无效显示()
{
glClear(GL_颜色_缓冲_位| GL_深度_缓冲_位);
glutSwapBuffers();

std::您的程序中没有明显的错误。请注意,
…SwapBuffers
函数实际上不是OpenGL API的一部分,而是属于图形系统GL支持API(wgl、GLX等)。我建议您在程序中调用glGetError(记住每次都要循环它,直到
==GL\u NO\u ERROR
)因此,请查看错误条件的确切位置。@Krounnons:我不知道这将如何导致您得到的行为,但是
GLUT\u CORE\u PROFILE
不是
glutInitContextFlags()的正确值
。正确的函数是
glutInitContextProfile
。但是,freeglut将上下文标志
GLUT\u DEBUG
定义为1,以及一个配置文件标志
GLUT\u CORE\u profile
——因此,您实际上使用此代码创建了一个调试上下文,而不是一个核心配置文件上下文。尽管在这两种情况下都应该可以工作。但是,我想要什么呢ed建议您明确创建调试上下文并注册调试回调以获取有关错误的更多信息…编辑:哦“GLDEBUGGEMAGESCALLBACK”必须在创建上下文之后进行,现在可以工作。当我打开程序时,我得到控制台垃圾信息:“函数glVertex2f已弃用,在预览上下文中不可用”..但是我的代码中没有glVertex2f()。@krounnons:这是一个很长的机会,但是您可以尝试从调试消息回调中转储当前的strack回溯。在使用glibc的Linux上,这非常简单(请参见
man backtrace
)。虽然在Windows上…我的项目待办事项列表中有一个可移植的回溯库,但我现在无法给你任何可行的。天哪…经过6个小时的调试和愤怒,我终于发现了问题。最近我安装了MSI加力燃烧器和RivaTunerStatisticServer。这些程序在任何应用程序/游戏的屏幕上绘制一些统计数据例如FPS、CPU/GPU温度、eccetera。当我打开程序时,这些程序尝试在窗口中绘制一些东西。我修复了在开发时关闭这些程序的问题。感谢所有支持:)您的程序中没有明显错误。请注意,
…SwapBuffers
函数实际上不是OpenGL的一部分API,但属于图形系统GL支持API(wgl、GLX等)。我建议您在程序中调用GLGETRROR(记住每次循环它直到
==GL\u NO\u ERROR
)因此,请查看错误条件的确切位置。@Krounnons:我不知道这将如何导致您得到的行为,但是
GLUT\u CORE\u PROFILE
不是
glutInitContextFlags()的正确值
。正确的函数是
glutInitContextProfile
。但是,freeglut将上下文标志
GLUT\u DEBUG
定义为1,以及一个配置文件标志
GLUT\u CORE\u profile
——因此,您实际上使用此代码创建了一个调试上下文,而不是一个核心配置文件上下文。尽管在这两种情况下都应该可以工作。但是,我想要什么呢ed建议您明确创建调试上下文并注册调试回调以获取有关错误的更多信息…编辑:哦“GLDEBUGGEMAGESCALLBACK”必须在创建上下文之后进行,现在可以工作。当我打开程序时,我得到控制台垃圾信息:“函数glVertex2f已弃用,在预览上下文中不可用”..但是我的代码中没有glVertex2f()。@krounnons:这是一个很长的机会,但是您可以尝试从调试消息回调中转储当前的strack回溯。在使用glibc的Linux上,这非常简单(请参见
man backtrace
)。虽然在Windows上…我的项目待办事项列表中有一个可移植的回溯库,但我现在无法给你任何可行的。天哪…经过6个小时的调试和愤怒,我终于发现了问题。最近我安装了MSI加力燃烧器和RivaTunerStatisticServer。这些程序在任何应用程序/游戏的屏幕上绘制一些统计数据例如FPS、CPU/GPU温度、eccetera。当我打开程序时,这些程序尝试在窗口中绘制一些东西。我修复了在开发时关闭这些程序的问题。感谢所有人的支持:)