我有一个三角形列表,其中一些是相互重叠的。我想使用alpha通道来显示较暗的空间意味着有很多重叠。但是,虽然我追加alpha通道,但它没有显示效果。以下是我的代码的一部分。
我用
初始化了OpenGLglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glClearColor(0.3, 0.3, 0.3, 1.0);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
顶点是一个向量。我通过使用“push_back”函数逐个放置这些值:(x,y,R,G,B,A)。
float* vertices_ptr = &vertices[0];
GLuint vao, vbo;
glGenVertexArrays(1, &vao);
glGenBuffers(1, &vbo);
// Transfer data from CPU to GPU
glBindVertexArray(vao);
glBindBuffer(GL_ARRAY_BUFFER, vbo);
glBufferData(GL_ARRAY_BUFFER, vertices.size()*sizeof(GLfloat), vertices_ptr, GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 2/* x y */, GL_FLOAT, GL_FALSE, 6*sizeof(GLfloat), (GLvoid*)(0 * sizeof(GLfloat)));
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 4/* R G B A */, GL_FLOAT, GL_TRUE, 6*sizeof(GLfloat), (GLvoid*)(2 * sizeof(GLfloat)));
glDrawArrays(GL_TRIANGLES, 0, vertices.size()/6);
有没有人面临同样的问题?非常感谢你帮我搞清楚了!