我试图用OpenGL3.3核心配置文件渲染一个简单的测试着色器。但我得到的一切都是一扇黑窗。
GLFWwindow* window;
GLuint vao;
GLuint vbo[2];
GLuint program;
const GLfloat square[8] = {
-1.0, -1.0,
-1.0, 1.0,
1.0, 1.0,
1.0, -1.0
};
const GLfloat indices[4] = { 0, 1, 2, 3 };
init opengl核心上下文和窗口
if( !glfwInit() ) {
std::cerr << "Failed to initialize GLFW\n";
return -1;
}
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
// Open a window and create its OpenGL context
window = glfwCreateWindow( 1024, 768, "", 0, 0);
if( window == NULL ) {
std::cerr << "Failed to open GLFW window.\n";
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
// Initialize GLEW
if (gl3wInit()) {
std::cerr << "Failed to initialize GLEW" << std::endl;
return -1;
}
if (!gl3wIsSupported(3, 3)) {
std::cerr << "OpenGL Version 3.3 not supported" << std::endl;
return -1;
}
glGenBuffers(2, vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glBufferData(GL_ARRAY_BUFFER, 8*sizeof(GLfloat), square, GL_STATIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
glBufferData(GL_ARRAY_BUFFER, 4*sizeof(GLushort), indices, GL_STATIC_DRAW);
glGenVertexArrays(1, &vao);
glBindVertexArray(vao);
program = glCreateProgram();
GLuint vertex_shader, fragment_shader;
loadShader_FILE(vertex_shader, "shader/default.vsh", GL_VERTEX_SHADER);
glAttachShader(program, vertex_shader);
loadShader_FILE(fragment_shader, "shader/default.fsh", GL_FRAGMENT_SHADER);
glAttachShader(program, fragment_shader);
glBindAttribLocation(program, 0, "pos");
glLinkProgram(program);
glUseProgram(program);
glBindBuffer(GL_ARRAY_BUFFER, vbo[0]);
glVertexAttribPointer(
0,
2,
GL_FLOAT,
GL_FALSE,
sizeof(GLfloat)*2,
(void*)0);
glEnableVertexAttribArray(0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, vbo[1]);
glDrawElements(
GL_TRIANGLE_STRIP,
4,
GL_UNSIGNED_SHORT,
(void*)0);
glDisableVertexAttribArray(0);
glfwSwapBuffers(window);
#version 330
in vec2 pos;
out vec2 c;
void main(void)
{
gl_Position = vec4(pos, 0.0, 1.0);
c = (pos+1)*0.5;
}
#version 330
in vec2 c;
out vec4 color;
void main(void)
{
color = vec4(c, 1, 1);
}
着色器编译没有错误,apitrace找不到任何opengl错误
const GLfloat indices[4] = { 0, 1, 2, 3 };
您告诉OpenGL,这些是无符号的短裤,但它们是浮点的。尽管glfloat
的大小是glushort
的两倍,但这些数字的表示方式是非常不同的。浮点顶点索引没有太多意义。
const GLushort indices[4] = { 0, 1, 2, 3 };
Hibernate 的常用配置文件主要分为 2 种:核心配置文件(hibernate.cfg.xml)和映射文件(Xxx.hbm.xml),它们主要用于配置数据库连接、事务管理、Hibernate 本身的配置信息以及 Hibernate 映射文件信息。 本节我们只讲解 Hibernate 核心配置文件,也即 hibernate.cfg.xml,后续将在《 Hibernate 映射文件》一节中继续讲
本文向大家介绍spring boot 核心配置文件是什么?相关面试题,主要包含被问及spring boot 核心配置文件是什么?时的应答技巧和注意事项,需要的朋友参考一下 配置文件有 . properties 格式和 . yml 格式,它们主要的区别是书法风格不同。 properties 配置如下: spring. RabbitMQ. port=5672 yml 配置如下: spring: Rab
关于中文分词的详细配置实例和分词词典的自定义设置,可以访问Coreseek网站中文分词核心配置查看。 核心配置: charset_dictpath = /usr/local/mmseg3/etc/ charset_type = zh_cn.utf-8 #charset_table = .................... #需将原有的该配置注释掉 ngram_le
我运行ArchLinux与梅萨10在惠普笔记本电脑与英特尔高清3000 GPU。(还有一个ATI卡,但我在开机时关闭了它。)我试图用核心配置文件运行OpenGL代码。根据glxinfo,应该支持OpenGL 3.1和GLSL 1.4: 但是,当我编译GLFW程序时,请尝试强制核心配置文件,并要求使用OpenGL版本,如下所示: 以及使用GLSL#版本140编译着色器,这是打印输出: 所以,似乎Op
本文向大家介绍Hadoop的核心配置是什么?相关面试题,主要包含被问及Hadoop的核心配置是什么?时的应答技巧和注意事项,需要的朋友参考一下 解答: Hadoop的核心配置通过两个xml文件来完成: 1.hadoop-default.xml; 2.hadoop-site.xml。 这些文件都使用xml格式,因此每个xml中都有一些属性,包括名称和值,但是当下这些文件都已不复存在。
本文向大家介绍Dubbo 核心的配置有哪些?相关面试题,主要包含被问及Dubbo 核心的配置有哪些?时的应答技巧和注意事项,需要的朋友参考一下 我曾经面试就遇到过面试官让你写这些配置,我也是蒙逼。。 配置之间的关系见下图。