1

我有一个 clgl 互操作可执行文件,它正在调用clCreateFromGLTexture2D. 那个电话失败了……

clCreateFromGLTexture2D( 0x06691828, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, 0, 1, CL_INVALID_GL_OBJECT ) = 0x00000000

我正在使用GLIntercept。这里。所以我在这里使用由 GLIntercept 生成的 Opengl32.dll ......好吧,它可以在 Nvidia GTX 上运行,并且可以在 AMD FUSION 和 AMD Radeon GPU 上独立运行而不会被拦截。但是,在使用开源 GLIntercept 时它会失败。

如果您有兴趣下载和重新创建问题,clgl 互操作测试代码会在此处发布。

有谁知道如何解决它?以下是我的调试日志中的一些陈述......如果有帮助..

如果您有兴趣下载我用于此的测试示例 clgl 互操作代码,我在 GLIntercept 代码网站上创建了一个未解决的问题/票证...

glutInit(  ) = 
glutInitDisplayMode( 12 ) 
glutInitWindowSize( 320, 258 ) 
wglChoosePixelFormat( 38010929, 001EF950 PIXELFORMATDESCRIPTOR {  nSize 28 nVersion 1 dwFlags 25  PFD_DOUBLEBUFFER  PFD_DRAW_TO_WINDOW  PFD_SUPPORT_OPENGL  iPixelType PFD_TYPE_RGBA cColorBits   cRedBits  cRedShift   cGreenBits  cGreenShift   cBlueBits  cBlueShift   cAlphaBits   cAlphaShift   cAccumBits   cAccumRedBits   cAccumGreenBits   cAccumBlueBits   cAccumAlphaBits   cDepthBits   cStencilBits   } 28 ) = 0x2
wglGetCurrentContext(  ) = 0x00000000
wglGetCurrentDC(  ) = 0x00000000
glutCreateWindow( OpenGL-CL interraction! ) = 0x1
glClearColor( 0, 0, 0, 0 ) 
glEnable( b71 ) 
glEnable( de1 ) 
glGenTextures( 1, 0125B194 { 1}  ) 
glBindTexture( de1, 1 ) 
glTexEnvi( 2300, 2200, 1e01 ) 
glTexParameteri( de1, 2801, 2600 ) 
glTexParameteri( de1, 2800, 2600 ) 
glTexImage2D( de1, 0, 8058, 100, 100, 0, 1908, 1401, 00C2E858 ) 
glBindTexture( de1, 0 ) 
clGetPlatformIDs( 0, NULL, 1 ) = CL_SUCCESS
clGetPlatformIDs( 1, 05744514, NULL ) = CL_SUCCESS
clGetDeviceIDs( 05744514, CL_DEVICE_TYPE_GPU, 1, 04516F40 , NULL ) = CL_SUCCESS
clGetDeviceInfo( 0x04516F40, CL_DEVICE_NAME, 400, BeaverCreek, NULL ) = CL_SUCCESS
clGetDeviceInfo( 0x04516F40, CL_DEVICE_EXTENSIONS, 400, cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_gl_sharing cl_ext_atomic_counters_32 cl_amd_device_attribute_query cl_amd_vec3 cl_amd_printf cl_amd_media_ops cl_amd_popcnt cl_khr_d3d10_sharing , NULL ) = CL_SUCCESS
wglGetCurrentContext(  ) = 0x00020000
wglGetCurrentDC(  ) = 0x38010929
wglGetCurrentContext(  ) = 0x00020000
clCreateContext( 8200  0x20000  8203  0x38010929  4228  0x5744514, 1, 04516F40 , NULL, NULL, CL_SUCCESS ) = 0x06A30828
clCreateCommandQueue( 0x06A30828, 0x04516F40, 0, CL_SUCCESS ) = 0x06A69900
clCreateProgramWithSource( 0x06A30828, 1, C:\Users\inteltc\Documents\clgl_latest\Debug\clgl_1.program, CL_SUCCESS ) = 0x06A6B9F8
clBuildProgram( 0x06A6B9F8, 0, NULL, NULL, NULL, NULL ) = CL_SUCCESS
clCreateKernel( 0x06A6B9F8, kernel1, CL_SUCCESS ) = 0x045266E0
clCreateFromGLTexture2D( 0x06A30828, CL_MEM_WRITE_ONLY, GL_TEXTURE_2D, , 0, 1, CL_INVALID_GL_OBJECT ) = 0x00000000
4

1 回答 1

0

我没有看到您为纹理对象调用 glTexImage2D,这基本上使纹理宽度、高度和 mipmap 未定义,因此很明显为什么它失败了。

于 2012-05-12T04:08:25.307 回答