- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我编译并运行我的代码以创建 opengl 3.3 或更高版本的上下文(与 Windows 版本相同,多了一两行)时,它默认为 3.0,这会导致我想要的一些应用程序出现问题端口结束。
我正在寻找对此的修复/解释。
来源如下:
//Using SDL and standard IO
#include <SDL2/SDL.h>
#include <stdio.h>
#include <GL/glew.h>
//Screen dimension constants
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
bool handleEvent(SDL_Event& event)
{
return true;
}
int main( int argc, char* args[] )
{
//The window we'll be rendering to
SDL_Window* window = NULL;
//Initialize SDL
if( SDL_Init( SDL_INIT_VIDEO ) < 0 )
{
printf( "SDL could not initialize! SDL_Error: %s\n", SDL_GetError() );
}
else
{
//Create window
window = SDL_CreateWindow("SDL/GLM/OpenGL Demo", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN );
if( window == NULL )
{
printf( "Window could not be created! SDL_Error: %s\n", SDL_GetError() );
}
else
{
SDL_GLContext context = SDL_GL_CreateContext(window);
SDL_GL_MakeCurrent(window, context);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_GL_SetSwapInterval(1); // set swap buffers to sync with monitor's vertical refresh rate
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glewExperimental = GL_TRUE;
glClearColor(1.0,0.0,0.0,1.0);
GLenum err = glewInit();
if (err != GLEW_OK)
{
printf("glew init failed: %s!\n", glewGetErrorString(err));
}
printf("opengl version :%s\n",glGetString(GL_VERSION));
bool running = true; // set running to true
SDL_Event sdlEvent; // variable to detect SDL events
while (running)
{ // the event loop
while (SDL_PollEvent(&sdlEvent))
{
if (sdlEvent.type == SDL_QUIT)
running = false;
else
{
running = handleEvent(sdlEvent);
}
}
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
SDL_GL_SwapWindow(window);
}
SDL_GL_DeleteContext(context);
SDL_DestroyWindow(window);
}
}
SDL_Quit();
return 0;
}
最佳答案
您需要在创建窗口之前设置 GL 属性,而不是在创建上下文之后:
Use this function to set an OpenGL window attribute before window creation.
例子:
#include <GL/glew.h>
#include <SDL2/SDL.h>
#include <iostream>
int main( int argc, char** argv )
{
SDL_Init( SDL_INIT_EVERYTHING );
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
SDL_Window* window = SDL_CreateWindow
(
"SDL2",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
300, 300,
SDL_WINDOW_SHOWN | SDL_WINDOW_OPENGL
);
if( NULL == window )
{
std::cerr << "Failed to create window: " << SDL_GetError() << std::endl;
SDL_Quit();
return 0;
}
SDL_GLContext context = SDL_GL_CreateContext(window);
if( NULL == context )
{
std::cerr << "Failed to create GL context: " << SDL_GetError() << std::endl;
SDL_DestroyWindow( window );
SDL_Quit();
return -1;
}
if( SDL_GL_MakeCurrent( window, context ) < 0 )
{
std::cerr << "Failed to make GL context current: " << SDL_GetError() << std::endl;
SDL_GL_DeleteContext( context );
SDL_DestroyWindow( window );
SDL_Quit();
return -1;
}
std::cout << "GL_VERSION: " << glGetString( GL_VERSION ) << std::endl;
SDL_GL_SetSwapInterval(1);
glewExperimental = GL_TRUE;
GLenum err = glewInit();
if( GLEW_OK != err )
{
std::cerr << "Failed init GLEW: " << glewGetErrorString( err ) << std::endl;
SDL_GL_DeleteContext( context );
SDL_DestroyWindow( window );
SDL_Quit();
return -1;
}
bool running = true;
while( running )
{
SDL_Event ev;
while( SDL_PollEvent( &ev ) )
{
if ( ev.type == SDL_QUIT )
running = false;
}
glClear( GL_COLOR_BUFFER_BIT );
SDL_GL_SwapWindow( window );
}
SDL_GL_DeleteContext( context );
SDL_DestroyWindow( window );
SDL_Quit();
return 0;
}
关于linux - SDL2/GL 上下文在 linux mint 上默认为 v3.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30788849/
我在带有 Virtual box 的 Macbook proretina 中安装了 Linux mint 17 mate,但是字体很小,如何在 mate 中启用 HiDPI 选项? 最佳答案 MATE
鼠标光标消失(屏幕的最后一个像素)。 例如。现在一切正常。 如果我将鼠标移到显示器顶部,它就会消失。 但同时我可以点击顶部面板上的按钮。 任何想法如何解决它? 最佳答案 Heath Jones (hj
我按照此处的建议从多核软件编译并安装了 x265 编解码器:https://bitbucket.org/multicoreware/x265/wiki/Home然后按照此处的建议手动安装启用了 lib
我正在使用 Linux mint 18.3。我正在尝试更改 Jenkins 的主目录。我创建了新目录,从旧目录复制了所有数据。之后我修改了 .profile(放在那里 export JENKINS_H
我想压缩带有 linuxmint 的驱动器..当我尝试通过 Gparted 卸载具有 limuxmint 空间 700gb 的驱动器时,它显示消息 "# umount -v "/"umount:/:
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
前言:Linux mint 18发布了,但是在虚拟机下安装,发现没有1080p分辨率的选项,可能是4.4内核的原因?搜索了一下解决方法,自测可用,记录一下。 1. 创建一个shell脚
一.mysql默认不支持中文,它的server和db默认是latin1编码.所以我们要将其改变为utf-8编码,因为utf-8包含了地球上大部分语言的二进制编码 1.关闭mysql服务 sudo
近日小编在Linux mint系统操作时,登录root用户声卡突然没有了声音,相比大家也遇到相同的情况,下面小编就给大家介绍下Linux mint登录root用户时声卡无声音的处理方法,一起来学习下
中文字体发虚怎么修改 1、还是一个老生常谈的问题。Linux Mint 和 Ubuntu 及其衍生版用户都可以参照此法解决问题。从 Ubuntu 12.04 开始,系统使用中文字体的第一选择是“文
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章Linux Mint Cinnamon中安装MATE桌面详细步骤由作者收
我正在使用 linux Mint 17.2“Rafaela”。今天我安装了佳能 iP2700 系列的驱动程序。驱动程序的 deb 包依赖于“libtiff4”包,但系统使用“libtiff5”,所以我
我正在建立一个很好的环境来在打印文档中展示我的代码。首先,我使用了 Latex 的 lSTListing 包,但后来我偶然发现了 类型转换 . minted 真的很棒,但有没有办法 更改高亮颜色 ?
我是linux mint的新手,我已经在它上工作了一个星期,而且声音根本不起作用。我尝试了很多在线建议的解决方案,但是没有运气。 谁能指导我问题所在或如何解决。 最佳答案 您是否在“声音设置”菜单中检
我想在 minted 包手册中为 minted 渲染源代码使用粗体字体。目前关键字是常用字体。 \usepackage[table]{xcolor} \usepackage{minted} \defi
肉眼观察,minted (Konrad Rudolph 的 LaTeX 包使用 Pygments 库进行代码突出显示)忠实地呈现传递给它的代码块,并以源代码中包含的任何缩进显示它们。 但是,如果您尝试
我是 C/Linux 的新手,我有一个简单的问题。考虑 sys/timerfd.h 头文件。它由函数定义组成: int timerfd_settime(int fd, int flags,
Linux MINT MYSQL 错误 您能解释一下发生了什么吗? 我无法在 xampp 中启动 我应该更改哪些配置? 我已经将/var/lib/mysql/更改为 chmod 777 201
我想创建一个自定义单元格,就像 Mint 应用程序中的单元格一样,它的功能几乎相同。我如何使用赚取和花费的数据绘制这两个条形图? 谢谢, 我做到了这一点: -(void)drawRect:(CGRec
我是一名优秀的程序员,十分优秀!