- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用着色器在 OpenGL 中绘制 3D 线条...到目前为止还没有办法做到这一点。
我的工作正常:
void draw_bonds (int nbonds)
{
glDisable (GL_LIGHTING);
glEnableClientState(GL_VERTEX_ARRAY);
// in 3D each bonds is defined using 6 floats
// a.x, a.y, a.z, b.x, b.y and b.z
vertices = calloc(nbonds*6, sizeof*vertices);
// I will skip the following, basically I store coordinates
// in the table "vertices"
prepare_bonds (nbonds)
glVertexPointer (3, GL_FLOAT, 0, vertices);
glDrawArrays (GL_LINES, 0, nbonds);
glDisableClientState (GL_VERTEX_ARRAY);
glEnable (GL_LIGHTING);
}
但是这并不:
#define GLSL(src) "#version 130\n" #src
const GLchar * vertex = GLSL(
uniform mat4 P; // projection matrix
uniform mat4 M; // modelview matrix
in vec3 position;
void main()
{
gl_Position = P * M * vec4 (position, 1.0);
}
);
/* Create and compile a shader */
static GLuint create_shader (int type, const GLchar * src)
{
GLuint shader;
int status;
shader = glCreateShader (type);
glShaderSource (shader, 1, & src, NULL);
glCompileShader (shader);
glGetShaderiv (shader, GL_COMPILE_STATUS, & status);
if (status == GL_FALSE)
{
int log_len;
char *buffer;
glGetShaderiv (shader, GL_INFO_LOG_LENGTH, & log_len);
buffer = g_malloc (log_len + 1);
glGetShaderInfoLog (shader, log_len, NULL, buffer);
g_warning ("Compile failure in %s shader:\n%s",
type == GL_VERTEX_SHADER ? "vertex" : "fragment",
buffer);
g_free (buffer);
glDeleteShader (shader);
return 0;
}
return shader;
}
GLuint program;
GLuint posAttrib;
static void init_shaders ()
{
GLuint vertexShader = create_shader (GL_VERTEX_SHADER, vertex);
program = glCreateProgram ();
glAttachShader (program, vertexShader);
glBindAttribLocation (program, vertexShader, "position");
glLinkProgram (program);
glUseProgram (program);
GLint lp = glGetUniformLocation (program, "P");
GLint lm = glGetUniformLocation (program, "M");
posAttrib = glGetAttribLocation (program, "position");
// projection_matrix and model_view_matrix are the same
// as the ones used in the first version of the code.
glUniformMatrix4fv (lp, 1, GL_FALSE, projection_matrix);
glUniformMatrix4fv (lm, 1, GL_FALSE, model_view_matrix);
}
void draw_bonds (int nbonds)
{
glDisable (GL_LIGHTING);
glEnableClientState(GL_VERTEX_ARRAY);
// in 3D each bonds is defined using 6 floats
// a.x, a.y, a.z, b.x, b.y and b.z
vertices = calloc(nbonds*6, sizeof*vertices);
// I will skip the following, basically I store coordinates
// in the table "vertices"
prepare_bonds (nbonds)
init_shaders ();
glGenVertexArrays (1, & vao);
glBindVertexArray (vao);
glGenBuffers (1, & vbo);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
glEnableVertexAttribArray (posAttrib);
glVertexAttribPointer (posAttrib, 3, GL_FLOAT, GL_FALSE, 0, 0)
glDrawArrays (GL_LINES, 0, nbonds);
glDisableClientState (GL_VERTEX_ARRAY);
glEnable (GL_LIGHTING);
}
我必须提到着色器编译得很好,那么我在这里缺少什么?
最佳答案
您绑定(bind)了属性“position”,但在着色器中您将其称为“pos”(in vec3 pos
)
关于c - OpenGL-GLSL 绘制 3D GL_LINES 顶点着色器与顶点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090891/
我在使用 GL_LINES block 时遇到问题……下面示例中的线条没有连接到末端(尽管有时它会随机决定连接一个或两个角)。相反,端点彼此相距 1 像素(留下一个未完全平方的角;如果这有意义的话)。
一段时间以来,我一直对 GL_LINES(以及 GL_LINE_LOOP 和 STRIP)感到好奇,我想知道 GL 实现通常如何处理它们。他们是否从线的端点和宽度推断出四边形?它会做一些更原始和更专业
我正在尝试使用 OpenGL 和 Pygame 创建一个 3d Rubiks Cube。但是,当我尝试在我创建的 GL_QUADS 表面上绘制线条时,它们没有显示出来。 我已经尝试将 GL_LINES
我想绘制一个删除隐藏边缘的对象的边缘。我想应用的想法是首先将对象的面渲染到深度缓冲区,然后在第二遍中绘制边缘并启用深度测试。 由于并非所有三角形边都应该可见,因此这些边是单独存储的(简单示例:在立方体
考虑以下代码: glColor4ub(255, 255, 255,255); glBegin(GL_QUADS); glVertex2i(100, 100); glVertex2i(300, 100)
我试图通过添加混合渲染到 FBO 来计算每个像素被写入的总次数来近似“轨迹密度”。 问题是 (1) 位移大的元素会因为线较长而被计数更多次,以及 (2) 由于用于绘制线的像素数也取决于线的角度。 我想
我试图用下面的代码画一条线,它的工作原理: // Include standard headers #include #include // Include GLEW #include // I
我所说的“类似钢笔”的笔画是这样的:当你用圆珠笔在纸上画画时。您将获得一 strip 有圆形开头和结尾的线条。如果我的解释不够好,请参阅 http://java.sun.com/docs/books/
glEnable(GL_CULL_FACE); glCullFace(GL_FRONT); glPolygonMode(GL_BACK,GL_LINE); 在上面的代码示例中,glPolygonMod
一段时间以来,我一直在使用 OpenGL 来制作 3D 应用程序,但我从来没有真正理解在生产阶段使用 GL_POINT 和 GL_LINES 原始绘图类型用于 3D 游戏。 (哪里)OpenGL 中的
我正在尝试以正常填充模式渲染图元,然后将其渲染为线框。 渲染代码: glClear(GL_COLOR_BUFFER_BIT); glClearColor(0.9f, 0.9f, 0.9f, 1); /
我被要求制作一个简单的旋转木马,通过鼠标左右点击来旋转。对于我使用的棍子 GL_LINES我遇到的问题是无法定义法线 vector 或类似我在 GL_POLYGON 中所做的事情使照明正确。我在网上搜
我无法让我的着色器在纹理的周边运行。我正在关注 https://learnopengl.com/作为指南并使用索引顶点绘制线基元。问题是只绘制了右侧和底部的线,缺少顶部和左侧。 我编写了一个小程序来尝
我正在努力开发一款仅使用程序生成的线条绘制的新 iOS 游戏。除了绘制一些图元时出现一些奇怪的问题外,一切都运行良好。 我正处于需要实现文本的位置,字符被设置为数组中的一系列点。当我去绘制点(CGPo
我正在尝试使用着色器在 OpenGL 中绘制 3D 线条...到目前为止还没有办法做到这一点。 我的工作正常: void draw_bonds (int nbonds) { glDisable (
我正在编写一个 OpenGL 库,它可以使用屏幕坐标绘制点、线和矩形。但是,我不知道如何将屏幕坐标转换为剪辑或相机坐标。我正在使用现代 OpenGL(顶点数组和顶点缓冲区,以及着色器)。 这基本上就是
如果我使用 GL_LINES 或 GL_LINE_STRIP 渲染多段线,我是否可以假设具有低顶点索引的线段首先绘制到帧缓冲区?比如,当我使用顶点 v0、v1、v2 指定线带时,我是否可以假定先渲染线
首先,这段代码的目的是什么? glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); 我可以放在那里 GL_DONT_CARE 但它不会让我画线,除非我使用 glDisable
我有以下程序,但我无法弄清楚为什么 glColor4f() 调用不会导致 glDrawArrays() 的输出出现红线,任何人都可以吗告诉我我做错了什么?由于某种原因正在输出一条白线。现代版本的 GL
我刚刚完成了我的 iOS 应用程序的第一个版本,Corebox ,现在正在开发一些新功能。 其中一项新功能是对 OpenGL 渲染进行“小”调整,以强制某些对象永远不会被绘制为小于最小尺寸。所有需要这
我是一名优秀的程序员,十分优秀!