zoukankan      html  css  js  c++  java
  • HGE tutorial02 plus

    在学习了教程2之后,前面我有一个问题:blend

    这里有前辈的一个博客:http://www.cppblog.com/WhiteDummy/archive/2012/12/13/196205.aspx

    允许我引用下前辈提到的blend的值:

    1)BLEND_COLORADD

    表示顶点的颜色与纹理的纹元(texel)颜色相加,这使得纹理变亮,可见顶点颜色为 0x00000000,将不造成任何影响。

    2)BLEND_COLORMUL

    表示顶点的颜色与纹理的纹元颜色相乘,这使得纹理变暗,可见顶点颜色为 0xFFFFFFFF 将不造成任何影响。


    3)BLEND_ALPHABLEND

    渲染时,将对象的像素颜色(而非顶点的颜色)与当前屏幕的对应像素颜色进行 alpha 混合。

    4)BLEND_ALPHAADD

    渲染时,将对象的像素颜色与当前屏幕的对应像素颜色相加,结果是有了变亮的效果。

    5)BLEND_ZWRITE
    写像素的 Z-order 到 Z-buffer

    6)BLEND_NOZWRITE

    渲染时,不写像素的 Z-order 到 Z-buffer

    以上1和2,3和4,5和6都是互斥的,并且必须选择一个的,默认情况下应该是2,3,6

    在这里我给自己的原来修改过的程序放上了一个背景图→_→其实就是加一个quad,然后将这个quad作为背景了。

    在原来程序中我们使用的组合是:2,4,6。也就是说当两张图叠加在一起的时候,我们是:纹理变暗;渲染时会变亮;不写像素Z-order到Z-buffer。

    注意:System_SetState时要让 HGE_ZBUFFER 为 TRUE。否则所有的z值都会被忽略。

    对于其中的组合,下次找个时间来试试所有的组合。话说已经尝试了一些,但是改变组合至少我没发现有多少的变化。

    在这个教程中,我们还学到了quad.我来看下他的结构,虽然前面看过前辈的介绍,但是还是要自己去了解下。

    struct hgeQuad
    {
        hgeVertex        v[4];     //顶点
        HTEXTURE         tex;      //纹理
        int              blend;    //混色
    };
    
    struct hgeVertex
    {
        float x, y;            //窗口内坐标
        float z;               //z-buffer
        DWORD col;             //颜色
        float tx, ty;          //纹理上的相对位置
    };

    通过数据结构也可以看出来一个quad就是有四个定点组成的一个2D的多边形。在quad的结构中有四个点和一个texture,四个点的作用是将texture上的某四个点的内容渲染到窗口上这四个点的空间内。也就是说我可以在四个很大的空间内渲染原来在texture上很小的内容?答案是:就是这样的。这里可以这样认为吧。可以把texture当作是一个胶片,而quad正式放映机,而窗口就是放映的界面,虽然在texture上的原来较小,但是在窗口上的投影的话就随便自己投多大了。效果图:

      叉开了,这里又有个我不懂的地方:作为每个定点还有颜色?如果我把颜色换成白色或者换成黑色(黑色的话和背景都分不开了吧,喂) 我先将4个定点的颜色都换成了白色;在将四个点的颜色分别换

           

    通过两幅图片可以明显的看出来,四个点对于图片的渲染有各自的一部分。具体的渲染过程待解!

    这里程序引用的图片是一个png的图片,我们换个别的格式更花哨的图片试试,上图:

    不要在意这是什么图→→这是在设置所有顶点的颜色为白色的情况下,当然前面的那种四个顶点不同颜色也是可以的。但是出来的图片就明显太暗了。接下来顺便试试四个顶点构成的不规则四边形:

     

    忠实地还原了texture上图像,但是在这个不规则的空间内就显得……

  • 相关阅读:
    透明度问题解决方案
    不得不去奋斗的原因
    未来的你肯定会感谢现在努力的你
    前端学习参考
    js仿京东轮播图效果
    hyper容器网络相关源码分析
    利用setns()将进程加入一个新的network namespace
    frakti && RunPodSandbox 源码分析
    Makefile 编写 tips
    《In Search of an Understandable Consensus Algorithm》翻译
  • 原文地址:https://www.cnblogs.com/yoru/p/4020723.html
Copyright © 2011-2022 走看看