改变点的颜色openGL3.3
Change color of points openGL3.3
我正在研究 opengl3.3+,我的问题是:是否可以向点云添加颜色。
事实上,我正在从一个数组中的文件加载一个点云(使用 VAO 和 VBO 来显示该数组),并且我在另一个数组中有这些点的颜色。
在 opengl < 3 中,我会在渲染每个点之前使用函数 glColor3f,但是在 OpenGL3 中有没有办法做到这一点? (也许使用着色器?)
所以,简单点:
我加载了一个文件,我可以在其中找到 (x,y,z) 点云中点的位置,以及 (r,g,b) 关联的颜色。我想用相关颜色绘制点。这是实现该目标的方法吗?
谢谢!
编辑:这是我要渲染的实际代码:
void setupPointCloud() {
glGenVertexArrays(1, &this->VAO);
glGenBuffers(1, &this->VBO);
glBindVertexArray(this->VAO);
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glBufferData(GL_ARRAY_BUFFER, this->bufferXYZ_.size() * sizeof(GLfloat), &this->bufferXYZ_[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat), (GLvoid*)0);
}
void draw() {
glBindVertexArray(this->VAO);
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glEnable(GL_PROGRAM_POINT_SIZE);
//std::cout << bufferXYZ_.size();
glDrawArrays(GL_POINTS, 0, m_Total);
glBindVertexArray(0);
glBindTexture(GL_TEXTURE_2D, 0);
}
(bufferXYZ_ 是一个包含点的 GLfloat 数组,我有 bufferColor_ 包含按良好顺序排列的颜色关联点)。
我正在研究 opengl3.3+,我的问题是:是否可以向点云添加颜色。 事实上,我正在从一个数组中的文件加载一个点云(使用 VAO 和 VBO 来显示该数组),并且我在另一个数组中有这些点的颜色。 在 opengl < 3 中,我会在渲染每个点之前使用函数 glColor3f,但是在 OpenGL3 中有没有办法做到这一点? (也许使用着色器?)
所以,简单点:
我加载了一个文件,我可以在其中找到 (x,y,z) 点云中点的位置,以及 (r,g,b) 关联的颜色。我想用相关颜色绘制点。这是实现该目标的方法吗?
谢谢! 编辑:这是我要渲染的实际代码:
void setupPointCloud() {
glGenVertexArrays(1, &this->VAO);
glGenBuffers(1, &this->VBO);
glBindVertexArray(this->VAO);
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glBufferData(GL_ARRAY_BUFFER, this->bufferXYZ_.size() * sizeof(GLfloat), &this->bufferXYZ_[0], GL_STATIC_DRAW);
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(GLfloat), (GLvoid*)0);
}
void draw() {
glBindVertexArray(this->VAO);
glBindBuffer(GL_ARRAY_BUFFER, this->VBO);
glEnable(GL_PROGRAM_POINT_SIZE);
//std::cout << bufferXYZ_.size();
glDrawArrays(GL_POINTS, 0, m_Total);
glBindVertexArray(0);
glBindTexture(GL_TEXTURE_2D, 0);
}
(bufferXYZ_ 是一个包含点的 GLfloat 数组,我有 bufferColor_ 包含按良好顺序排列的颜色关联点)。