0

だから私はPRBoomを腕に移植して遊んでいて、問題を乗り越えることができます...

次のコードがあります....

R_DrawColumn_f R_GetDrawColumnFunc(enum column_pipeline_e type,
                               enum draw_filter_type_e filter,
                               enum draw_filter_type_e filterz) {
  R_DrawColumn_f result = drawcolumnfuncs[V_GetMode()][filterz][filter][type];
  if (result == NULL)
    I_Error("R_GetDrawColumnFunc: undefined function (%d, %d, %d)",
        type, filter, filterz);
  return result;
}

生産する

04-12 12:58:45.970: E/DJNI(16943): システム エラー: R_GetDrawColumnFunc: 未定義の関数 (2、1、0)

したがって、 drawcolumnfuncs メソッドがうまくいかないことは私の理解です。しかし、ここで苦労しています。この関数 sig が何をしているのかわかりません...

static R_DrawColumn_f drawcolumnfuncs[VID_MODEMAX][RDRAW_FILTER_MAXFILTERS][RDRAW_FILTER_MAXFILTERS][RDC_PIPELINE_MAXPIPELINES] = {
{
  {
    {NULL, NULL, NULL, NULL,},
    {R_DrawColumn8_PointUV,
     R_DrawTLColumn8_PointUV,
     R_DrawTranslatedColumn8_PointUV,
     R_DrawFuzzColumn8_PointUV,},
    {R_DrawColumn8_LinearUV,
     R_DrawTLColumn8_LinearUV,
     R_DrawTranslatedColumn8_LinearUV,
     R_DrawFuzzColumn8_LinearUV,},
    {R_DrawColumn8_RoundedUV,
     R_DrawTLColumn8_RoundedUV,
     R_DrawTranslatedColumn8_RoundedUV,
     R_DrawFuzzColumn8_RoundedUV,},
  },
...

HashMap の C バージョンを作成しているように見えますが、なぜ null を返すのでしょうか?

4

1 に答える 1

3

これは関数ではなく、単なる配列です。

そして、この配列では、2 番目のインデックスが 0 の場合、その内容はすべて NULL であることが示されています。そして、その 2 番目のインデックスは関数の 3 番目の引数であり、たまたまゼロです。

これは、関数 R_GetDrawColumnFunc が間違った引数で呼び出されていることを意味します。

于 2013-04-12T13:19:51.207 に答える