代码之家  ›  专栏  ›  技术社区  ›  Sunkas

为什么OpenGL混合不能满足HTC的需求?

  •  5
  • Sunkas  · 技术社区  · 14 年前

    有没有人知道如何在OpenGL(android)中混合HTC的需求。我正在尝试绘制彩色三角形,并使用颜色缓冲区的alpha值将它们与背景(或另一个三角形)混合。

    它在模拟器(2.1)和htc英雄2.1上都能工作,但不是我对2.2的渴望。英雄和欲望之间有什么硬件上的区别吗?

    代码的主要内容是(不按顺序):

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    
    gl.glEnable(GL10.GL_BLEND);         
    gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
    
    private final static float[] colors = {
           1f, 0f, 0f, 0.5f, // point 0 red
           1f, 0f, 0f, 0.5f, // point 1 red
           1f, 0f, 0f, 0.5f, // point 2 red
           1f, 0f, 0f, 0.5f, // point 3 red
    
           1f, 0f, 0f, 0.5f, // point 4 red
           1f, 0f, 0f, 0.5f, // point 5 red
           1f, 0f, 0f, 0.5f, // point 6 red
           1f, 0f, 0f, 0.5f, // point 7 red
    };
    

    另外,如果有人需要,我可以提供更多的代码。。。

    1 回复  |  直到 12 年前
        1
  •  3
  •   Frogblast    14 年前

    乔纳斯,你对灯光的评论似乎是正确的,所以现在我想我们有一个答案。OpenGL ES 1.1.12规范声明 The value of A produced by lighting is the alpha value associated with dcm ,其中dcm是材质漫反射颜色。

    如果您已启用 COLOR_MATERIAL ,则材质漫反射颜色和材质环境色都取自当前顶点颜色。这意味着愿望是不正确的,仿真器是正确的。

    如果您已禁用 COLROR_MATERIAL (默认状态),然后漫反射颜色材质设置为 glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, ptrTo4Floats) . 这意味着愿望是正确的,而仿真器是错误的。