0

OpenCLが2Dテクスチャにレンダリングできるようにしようとしています。私は最初に関数clCreateFromGLTexture2Dに遭遇しました。書いたのですが、コンパイルしてみると、定義されていないことがわかりました。私は最終的に「cl_gl.h」でそれを見つけました:

#ifdef CL_USE_DEPRECATED_OPENCL_1_1_APIS
#warning CL_USE_DEPRECATED_OPENCL_1_1_APIS is defined. These APIs are unsupported and untested in OpenCL 1.2!
    extern CL_API_ENTRY cl_mem CL_API_CALL
    clCreateFromGLTexture2D(cl_context      /* context */,
                            cl_mem_flags    /* flags */,
                            cl_GLenum       /* target */,
                            cl_GLint        /* miplevel */,
                            cl_GLuint       /* texture */,
                            cl_int *        /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;

    extern CL_API_ENTRY cl_mem CL_API_CALL
    clCreateFromGLTexture3D(cl_context      /* context */,
                            cl_mem_flags    /* flags */,
                            cl_GLenum       /* target */,
                            cl_GLint        /* miplevel */,
                            cl_GLuint       /* texture */,
                            cl_int *        /* errcode_ret */) CL_EXT_SUFFIX__VERSION_1_1_DEPRECATED;
#endif /* CL_USE_DEPRECATED_OPENCL_1_2_APIS */

そこで、「cl_gl.h」の他の場所を調べたところ、clCreateFromGLTextureが見つかりました。上位互換性のために、代わりにそれをコードに記述しました。ただし、関数clCreateFromGLTextureにより、LNK2019(未解決の外部)が発生します。clCreateFromGLBufferclCreateFromGLRenderbufferを使用するとコンパイルできるため、これは非常に疑わしいと思います。これらは両方とも「cl_gl.h」にあります。

だから、私の質問:同じモジュール内のそのすぐ隣の関数が定義を持っているのに、なぜclCreateFromGLTextureが定義を持っていないのですか?私は現在「OpenCL.lib」に対してリンクしています。他に必要なものはありますか?何も見えませんでした。これはライブラリ自体の問題ですか?

[編集:clGetDeviceInfo(device_id、CL_DEVICE_IMAGE_SUPPORT、sizeof(cl_bool)、&result、NULL); 価値があるのはCL_TRUEです。]

ありがとう、

4

2 に答える 2

3

OpenCLライブラリを最新バージョンに更新してみてください(1.2)。

clCreateFromGLTextureはOpenCL1.2標準の一部として定義されていますが、clCreateFromGLTexture2DclCreateFromGLTexture3DはOpenCLの一部です1.0。OpenCLライブラリが最新でない場合、未定義のエラーが発生します。

于 2012-06-26T07:56:14.250 に答える
0

このエラーが発生し、修正するのに苦労しました。VS2010を使用していると思います。これは、次のような理由で発生する可能性があります。

  1. プロジェクトのプロパティ->リンカ->入力->追加のライブラリ依存関係にライブラリへの参照を含めていません

  2. ソリューションを32ビットとしてコンパイルし、64ビットライブラリファイルを使用している、またはその逆。

見てみな。

于 2012-07-08T05:52:57.780 に答える