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(未解決の外部)が発生します。clCreateFromGLBufferとclCreateFromGLRenderbufferを使用するとコンパイルできるため、これは非常に疑わしいと思います。これらは両方とも「cl_gl.h」にあります。
だから、私の質問:同じモジュール内のそのすぐ隣の関数が定義を持っているのに、なぜclCreateFromGLTextureが定義を持っていないのですか?私は現在「OpenCL.lib」に対してリンクしています。他に必要なものはありますか?何も見えませんでした。これはライブラリ自体の問題ですか?
[編集:clGetDeviceInfo(device_id、CL_DEVICE_IMAGE_SUPPORT、sizeof(cl_bool)、&result、NULL); 価値があるのはCL_TRUEです。]
ありがとう、