- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下程序,但我无法弄清楚为什么 glColor4f()
调用不会导致 glDrawArrays()
的输出出现红线,任何人都可以吗告诉我我做错了什么?由于某种原因正在输出一条白线。现代版本的 GL 不再支持 glColor4f()
。如果是这样的话,像这样给线条上色的正确方法是什么?
我所有的谷歌搜索让我发现我应该调用:
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
但是,在添加这些调用之后,我看不出有任何区别。
#include <vector>
#include <GL/glew.h>
#include <GLFW/glfw3.h>
#include <glm/glm.hpp>
int main(int argc, char *argv[]) {
if(!glfwInit()) {
return EXIT_FAILURE;
}
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
GLFWwindow* window = glfwCreateWindow(800, 600, "Line Intersection", NULL, NULL);
if(!window) {
glfwTerminate();
return EXIT_FAILURE;
}
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
if(glewInit() != GLEW_OK) {
glfwTerminate();
return EXIT_FAILURE;
}
if(!GLEW_VERSION_3_2) {
glfwTerminate();
return EXIT_FAILURE;
}
static const glm::vec3 arr[] = {
glm::vec3(0,0,0),
glm::vec3(0,0.8f,0)
};
const glm::vec3* first = arr;
const glm::vec3* last = arr + sizeof(arr) / sizeof(arr[0]);
std::vector<glm::vec3> vertexBufferData (first, last);
static GLuint vertexBufferId;
glGenBuffers(1, &vertexBufferId);
glBindBuffer(GL_ARRAY_BUFFER, vertexBufferId);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertexBufferData[0]) * vertexBufferData.size(), &vertexBufferData[0], GL_STATIC_DRAW);
GLuint vertexArrayId;
glGenVertexArrays(1, &vertexArrayId);
glBindVertexArray(vertexArrayId);
glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);
glEnable(GL_COLOR_MATERIAL);
glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE);
while(!glfwWindowShouldClose(window)){
glClearColor(0, 0, 0, 1);
glClear(GL_COLOR_BUFFER_BIT);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, NULL);
glColor4f(1.0f,0.0f,0.0f,1.0f);
glDrawArrays(GL_LINES, 0, vertexBufferData.size());
glDisableVertexAttribArray(0);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return EXIT_SUCCESS;
}
最佳答案
您已选择核心配置文件。
Core 中没有免费赠品,您必须提供顶点和片段着色器。
关于c++ - 如何使用 glColor4f() 和 glDrawArrays(GL_LINES, 0, 2) 绘制彩色线条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17129335/
我是 OpenGL 的新手,所以也许答案很明显。我目前正在尝试在 C++ 中使用 GL_TRIANGLE_FAN 制作一个蓝色圆圈。我的问题是,当我使用 glColor4f 设置颜色时,它会将我所有其
我有以下头文件: #ifndef CLASSES_H #define CLASSES_H class Mouse // Handles clicking of the mouse { private:
基本上我在 opengl es 1.1 中有一个功能齐全的 ogl 程序(2D 游戏),除了一个问题外一切正常:glcolor 我正在尝试将我的一些纹理设置为半透明,我想按如下方式进行; gl.glC
我的代码某处有问题,但对于我绘制的任意数量的图元,尽管调用了 glClearColor 然后使用 glColor3f 选择颜色,出现的颜色是完全随机的...... 所以在我的渲染类中,我循环遍历所有对
我正在尝试绘制一个洛伦兹吸引子,整个吸引子的颜色都会发生变化。我已经编写了以下用于计算吸引点的 for 循环。 float x = 1, y = 1, z = 1; glBegin(G
我的纹理本身有一个透明的背景,我想按原样渲染它。 glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glEnableClientState(GL_VERTEX_
我有一个特别烦人的问题。在某些情况下,对 glColor 的调用似乎被忽略,导致对象以不正确的颜色显示。 可以找到显示此问题的 Qt 项目 here . 当您运行该程序时,您在屏幕上看到的只是两个从某
有什么方法可以发送这样的结构: struct COLOR { float r, g, b, a; }; 作为一个参数直接进入 glColor*() 函数?会使代码更好。 我可以创建自己的函数并
这听起来可能很愚蠢……但我一直在想,如果我向 glColor*f 函数发送一个大于 1.0f 的值有关系吗? 较旧的 gfx 卡/驱动程序是否以不同方式处理这些问题? OpenGL 是直接使用我给它的
我是一名优秀的程序员,十分优秀!