2017-06-21 200 views
0

我正在研究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_包含在良好的秩序相關的積分顏色)。

回答

1

是的,爲了關聯每個頂點的顏色,您需要使用着色器。

你可以看看these關於OpenGL的教程。他們會給你一個關於現代OpenGL的知識。特別是,this部分向您展示瞭如何去做你想做的事情。

+0

哦!當然是! ...我不是一個聰明人,我只需要發送數據與佈局......謝謝 –