簡體   English   中英

OpenGL-GLKit:透明對象和紋理

[英]OpenGL- GLKit: transparent objects and texturing

我的項目是使用OpenGL 2.0和GLKit的IOS應用程序。 簡而言之,我有一個透明背景的星星紋理,我想在廣場上應用。 期望的最終結果是看到一顆星; 不是廣場上的明星。

我當前的問題是,當我在正方形上應用紋理時,我看到一個由其材質顏色變量定義的彩色正方形的星。 我想要的只是看到明星並讓方塊的其余部分透明。

代碼如下:

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 


    [effectTmp prepareToDraw];

    glEnableVertexAttribArray(GLKVertexAttribPosition);
    glEnableVertexAttribArray(GLKVertexAttribTexCoord0);
    glEnableVertexAttribArray(GLKVertexAttribNormal);

    glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].vertex);
    glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].normal);

    glVertexAttribPointer(GLKVertexAttribTexCoord0, 2, GL_FLOAT, GL_FALSE, sizeof(ColoredVertexData3D), &vertexDataTexture[0].color);

    glDrawArrays(GL_TRIANGLES, 0, [drawObjectTmp getSizeFromVertexIndicesArray]);
    glDisableVertexAttribArray(GLKVertexAttribPosition);
    glDisableVertexAttribArray(GLKVertexAttribTexCoord0);
    glDisableVertexAttribArray(GLKVertexAttribNormal);

    glDisable(GL_BLEND);

並且envMode設置為GLKTextureEnvModeDecal,如下所示:

effect.texture2d0.envMode = GLKTextureEnvModeDecal;

可能在我看不到的走廊里有一頭大象; 歡迎任何幫助或指針,以幫助看到它的透明方塊明星。

干杯,Stéphane

文檔 - GLKTextureEnvModeDecal使用紋理的alpha組件將紋理的顏色與輸入顏色混合。

我想你想要GLKTextureEnvModeReplace。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM