- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这是顶点着色器
#version 450
in vec3 iPosition;
in vec4 iColor;
out vec4 oColor;
uniform mat4 uMVP;
void main()
{
oColor = iColor;
gl_Position = uMVP * vec4(iPosition, 1.0);
}
这是片段着色器
#version 450
in vec4 iColor;
out vec4 oColor;
void main()
{
oColor = iColor;
}
除了粘贴我所有的代码,这是我所做的:
1) 每次调用 Open GL 函数调用后,我都会遇到 glGetError
。在对顶点着色器中的 iColor 变量调用 glGetAttribLocation
之前,我没有收到任何错误。
在分别调用 glCompileShader
和 glLinkProgram
之后,我有以下代码:
GLint isCompiled = 0;
glGetShaderiv(m_fragmentShader, GL_COMPILE_STATUS, &isCompiled); GL_CALL
if(isCompiled == GL_FALSE) {
GLint maxLength = 0;
glGetShaderiv(m_fragmentShader, GL_INFO_LOG_LENGTH, &maxLength); GL_CALL
std::vector<GLchar> errorLog(maxLength);
glGetShaderInfoLog(m_fragmentShader, maxLength, &maxLength, &errorLog[0]);
GL_CALL
std::stringstream out;
std::copy(errorLog.begin(), errorLog.end(), std::ostream_iterator<char>(
out, ""));
qDebug() << out.str().c_str();
glDeleteShader(m_fragmentShader); GL_CALL
QCoreApplication::exit(-1);
}
GLint isLinked = 0;
glGetProgramiv(m_shaderProgram, GL_LINK_STATUS, (int *)&isLinked);
if(isLinked == GL_FALSE) {
GLint maxLength = 0;
glGetProgramiv(m_shaderProgram, GL_INFO_LOG_LENGTH, &maxLength); GL_CALL
std::vector<GLchar> infoLog(maxLength);
glGetProgramInfoLog(m_shaderProgram, maxLength, &maxLength, &infoLog[0]);
GL_CALL
std::stringstream out;
std::copy(infoLog.begin(), infoLog.end(), std::ostream_iterator<char>(
out, ""));
qDebug() << out.str().c_str();
glDeleteProgram(m_shaderProgram); GL_CALL
glDeleteShader(m_vertexShader); GL_CALL
glDeleteShader(m_fragmentShader); GL_CALL
QCoreApplication::exit(-1);
}
我已尝试将版本改回 150,但出现同样的错误。我知道有些实现会优化变量。但是我明明是用这个来判断颜色的。
我打算返回版本控制历史,看看是什么变化导致了这个错误,但这可能需要我一些时间。
如果有帮助,这里是绘制函数的简化版本:
void Spline::draw()
{
glUseProgram(m_shaderProgram); GL_CALL
GLint posAttrib = glGetAttribLocation(m_shaderProgram, "iPosition"); GL_CALL
GLint colAttrib = glGetAttribLocation(m_shaderProgram, "iColor"); GL_CALL
glBindBuffer(GL_ARRAY_BUFFER, m_vbo); GL_CALL
std::size_t stride = verts::traits::stride;
std::size_t dimension1 = verts::datum_type::internal_type1::dimension;
std::size_t byte_offset1 = verts::traits::type1_byte_offset;
glEnableVertexAttribArray(posAttrib); GL_CALL
glVertexAttribPointer(posAttrib, dimension1, GL_FLOAT, GL_FALSE,
stride, (void*)byte_offset1); GL_CALL
std::size_t dimension2 = verts::datum_type::internal_type2::dimension;
std::size_t byte_offset2 = verts::traits::type2_byte_offset;
glEnableVertexAttribArray(colAttrib); GL_CALL
glVertexAttribPointer(colAttrib, dimension2, GL_FLOAT, GL_FALSE,
stride, (void*)byte_offset2); GL_CALL
opengl_math::matrix_4X4<float, opengl_math::column> model(
opengl_math::identity);
opengl_math::matrix_4X4<float, opengl_math::column> view =
opengl_math::look_at<float, opengl_math::column>(
opengl_math::point_3d<float>(0.0f, 0.0f, 20.0f),
opengl_math::point_3d<float>(0.0f, 0.0f, 0.0f),
opengl_math::vector_3d<float>(0.0f, 1.0f, 0.0f));
GLint uniMVP = glGetUniformLocation(m_shaderProgram, "uMVP"); GL_CALL
glUniformMatrix4fv(uniMVP, 1, GL_FALSE,
(m_projection * view * model).to_gl_matrix()); GL_CALL
glDrawArrays(GL_LINE_STRIP, 0, m_vertexAttrib.get_attribute_count());
GL_CALL
}
最佳答案
您在两个着色器阶段都使用 iColor
作为输入名称。由于无法查询片段着色器属性,因此您必须确保该名称在着色器中是唯一的。您可以使用以下代码执行此操作:
顶点:
#version 450
in vec3 iPosition;
in vec4 iColor;
out vec4 xColor;
uniform mat4 uMVP;
void main()
{
xColor = iColor;
gl_Position = uMVP * vec4(iPosition, 1.0);
}
片段:
#version 450
in vec4 xColor;
out vec4 oColor;
void main()
{
oColor = xColor;
}
关于c++ - GLSL 4.5 : Why is my "in" variable for Color Not Being Found by glGetAttribLocation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327303/
假设我有一个颜色数组(具有整个色谱,从红色到红色。)。较短的版本如下所示: public Color[] ColorArray = new Color[360] { Color.FromArgb(25
当我通过 http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fwww.gamefriction.com%2FCoded&prof
我需要帮助来解决验证 CSS。在这里,我在 W3 验证中遇到了 20 个相同的错误。我不明白。如果您能解决此问题,我将不胜感激。 错误:两种上下文中 color 和 background-color
我正在尝试覆盖 bootstrap4 样式。 我没有使用 Sass 的经验,但这看起来像是 bootstrap SCSS 文件中的错误。 我的自定义文件是: /* custom.scss */
我是 sass 的新手,我写了一些 sass 代码,但它没有编译。 $classes : primary secondary success warning danger; $colors
我想制作一个散点图,其中每个点都有一个球体。点及其球体都根据某些列值着色。 一个显示我想要的最小示例: library(ggplot2) library(vcd) # only needed for
我正在尝试添加一个选项来更改网站颜色。所以,我有一个工作正常的色域,但问题是当鼠标悬停时我需要将颜色更改为深 10%。函数 darken 表示第一个参数必须是颜色。 Error: argument `
我正在尝试从下拉菜单中更改主题颜色,但出现此错误:“预期类型为'List>'的值,但类型为之一 'MappedListIterable>' Color selected ; MaterialApp(
有没有办法将 Inno Setup 底部面板的背景颜色更改为白色? 谢谢你的帮助! 最佳答案 您描述的底部面板实际上是向导表单的区域,因此您只需设置 Color WizardForm 的属性(prop
sublime text包Color Highlighter看起来很有用。但是,它的行为似乎并不像文档中描述的那样。 根据文档: Usage : Just click or move the curs
我有一个由 Excel 2007 创建的文档: ... 在 xl/styles.xml 的字体定义中包含以下颜色: 我从ECMA标准了解到这个颜色索引指的是收藏于 xl/styles.xml如果有
简单问题: (如何)是否可以设置 的值在 Chrome 中选择此类输入时,要在颜色选择器中清空吗? 编辑:我想将输入的值更改为 "" 最佳答案 我认为它不能设置为透明,但您可以使用value="#c
我正在尝试截屏,检查屏幕截图中的某种颜色,如果找到该颜色,则单击它。 我遇到的问题是颜色的 RGB 值必须准确。 我想知道是否可以将图像转换为颜色很少的图像。 抱歉打扰了。我没有受过适当的训练。我现在
有谁知道为什么 CSS 为文本提供了 color,但没有 font-color 或 text-color? 看起来很反直觉,有点像text-decoration: underline 而不是font-
我想弄清楚为什么 mix-blend-mode: color; css 选择器和值会影响除白色以外的所有颜色,而不是影响除白色和黑色以外的所有颜色。有人可以向我解释为什么会这样吗? 最佳答案 来自 t
我正在尝试创建 Angular 2 主题,我按照网站上提到的教程进行操作。这是我的主题文件。 @import '~@angular/material/theming'; @include mat-co
我正在尝试更改 ProgressBar 中栏的颜色 pBar.setStyle("-fx-accent: green"); 但我遇到了一个问题:这似乎不适合我! (或者我只是不明白一些事情) 这是代码
给定最大迭代次数 = 1000 给我一些关于如何着色(红色、绿色、蓝色)的想法。我现在能想到的只有蹩脚的 2 种颜色渐变:( 真的有可能想出像这样美丽的东西吗? 最佳答案 该死的,他们不会让我一个新手
要将 url 参数解码为颜色,我使用此 HttpMessageConverter: public class ColorHttpMessageConverter implements HttpMess
我创建了一个显示色谱的自定义控件。我正在覆盖 OnRender() 方法以使用颜色绘制控件。由于某种原因,“计算”的颜色(R G B 值)具有一定的透明度,即使我将 Alpha 值 (A) 设置为最大
我是一名优秀的程序员,十分优秀!