改变点的颜色openGL3.3

改变点的颜色openGL3.3

问题描述:

我正在研究opengl3.3 +,我的问题是:是否可以给点云添加颜色。事实上,我从一个数组中的文件中加载一个pointCloud(使用VAO和VBO来显示该数组),并且我为另一个数组中的那些点设置了颜色。 在opengl < 3我会在渲染每个点之前使用函数glColor3f,但在OpenGL3中有办法做到这一点? (也许使用着色器?)改变点的颜色openGL3.3

所以,很简单:
我加载一个文件,其中我可以找到点(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_包含在良好的秩序相关的积分颜色)。

是的,为了关联每个顶点的颜色,您需要使用着色器。

你可以看看these关于OpenGL的教程。他们会给你一个关于现代OpenGL的知识。特别是,this部分向您展示了如何去做你想做的事情。

+0

哦!当然是! ...我不是一个聪明人,我只需要发送数据与布局......谢谢 –