Beispiel #1
0
static void set_geometry_shader( void )
{
   void *handle;
   const char *text =
      "GEOM\n"
      "PROPERTY GS_INPUT_PRIMITIVE TRIANGLES\n"
      "PROPERTY GS_OUTPUT_PRIMITIVE TRIANGLE_STRIP\n"
      "DCL IN[][0], POSITION, CONSTANT\n"
      "DCL IN[][1], COLOR, CONSTANT\n"
      "DCL OUT[0], POSITION, CONSTANT\n"
      "DCL OUT[1], COLOR, CONSTANT\n"
      "0:MOV OUT[0], IN[0][0]\n"
      "1:MOV OUT[1], IN[0][1]\n"
      "2:EMIT\n"
      "3:MOV OUT[0], IN[1][0]\n"
      "4:MOV OUT[1], IN[0][1]\n" /* copy color from input vertex 0 */
      "5:EMIT\n"
      "6:MOV OUT[0], IN[2][0]\n"
      "7:MOV OUT[1], IN[2][1]\n"
      "8:EMIT\n"
      "9:ENDPRIM\n"
      "10:END\n";

   handle = graw_parse_geometry_shader(ctx, text);
   ctx->bind_gs_state(ctx, handle);
}   
Beispiel #2
0
static void set_geometry_shader( void )
{
    FILE *f;
    char buf[50000];
    void *handle;
    int sz;

    if ((f = fopen(filename, "r")) == NULL) {
        fprintf(stderr, "Couldn't open %s\n", filename);
        exit(1);
    }

    sz = fread(buf, 1, sizeof(buf), f);
    if (!feof(f)) {
        printf("file too long\n");
        exit(1);
    }
    printf("%.*s\n", sz, buf);
    buf[sz] = 0;

    handle = graw_parse_geometry_shader(ctx, buf);
    ctx->bind_gs_state(ctx, handle);
    fclose(f);
}