【问题标题】:OpenGL polygon stippleOpenGL 多边形点画
【发布时间】:2010-02-17 04:11:06
【问题描述】:

我想知道如何将 32x32 的数组映射到位图。以下数组表示位图。我知道数组的每一行代表位图的行。数组的第一行是位图的最后一行,以此类推,直到数组的最后一行是位图的第一行,但这是如何工作的?

GLubyte myInitial[] = {
    0xff, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
    0xff, 0x01, 0xff, 0x01, 0x00, 0x01, 0x01, 0x01,
    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
    0x00, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x01,
    0xff, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00,
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,};

【问题讨论】:

    标签: opengl polygon stipple


    【解决方案1】:

    那个点画图案的格式不是很好。它应该是这样的:

    0xff, 0x01, 0x00, 0x01,  // #########               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0x00, 0x01, 0x00, 0x01,  //         #               #       
    0xff, 0x01, 0xff, 0x01,  // #########       #########       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0x00, 0x01, 0x01, 0x01,  //         #       #       #       
    0xff, 0x00, 0xFF, 0x01,  // ########         ########       
    0x00, 0x00, 0x00, 0x00,  //
    0x00, 0x00, 0x00, 0x00,  //
    0x00, 0x00, 0x00, 0x00   //
    

    这是一个 32x32 每像素 1 位的位图。如您所见,如果您要在黑色背景上以白色绘制一个 32x32 像素的屏幕四边形,它将呈现 PE。

    【讨论】:

      【解决方案2】:

      每个输入字节由 8 位组成。渲染时,图案会平铺在三角形表面上。只要图案有 1 位,就会绘制像素。

      查看documentation,以及example。

      【讨论】:

      • @Charles,表面的形状或视角无关紧要。点画应用于像素级别。
      • @Mike:当然可以,但是解码时的形状必须与编码时的形状相匹配。
      猜你喜欢
      • 2011-12-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2023-03-14
      • 2011-04-11
      • 2012-03-09
      • 1970-01-01
      相关资源
      最近更新 更多