取消输入输出同步

ios::sync_with_stdio(false);


int CEglimage::initEgl()  
{
	PFNEGLCREATEIMAGEKHRPROC n_eglCreateImageKHR = NULL;
	g_glEGLImageTargetTexture2DOES = NULL;
	g_eglDisplayHandle = NULL;
	LOGI("start open...");
	glFinish();
	const char* const driver_absolute_path = "/system/lib/egl/libEGL_mali.so";
	/*dso = dlopen(driver_absolute_path, RTLD_LAZY);
	
	if (dso != 0)
	{
	  LOGI("dlopen: SUCCEEDED");
	  n_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC)dlsym(dso, "eglCreateImageKHR");
	  g_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC)dlsym(dso,"eglDestroyImageKHR");
	}
	else*/
	TRACE_GL
	{
	  //LOGI("dlopen: FAILED! Loading functions in common way!");
	  n_eglCreateImageKHR = (PFNEGLCREATEIMAGEKHRPROC) eglGetProcAddress("eglCreateImageKHR");
	  g_eglDestroyImageKHR = (PFNEGLDESTROYIMAGEKHRPROC) eglGetProcAddress("eglDestroyImageKHR");
	}
	
	if(n_eglCreateImageKHR == NULL)
	{
	  LOGE("Error: Failed to find eglCreateImageKHR at %s:%i\n", __FILE__, __LINE__);
	  return -1;
	}
	g_glEGLImageTargetTexture2DOES = (PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) eglGetProcAddress("glEGLImageTargetTexture2DOES");
	if(g_glEGLImageTargetTexture2DOES == NULL)
	{
	  LOGE("Error: Failed to find glEGLImageTargetTexture2DOES at %s:%i\n", __FILE__, __LINE__);
	  return -1;
	}

	if(g_eglDestroyImageKHR == NULL)
	{
	  LOGE("Error: Failed to find eglDestroyImageKHR at %s:%i\n", __FILE__, __LINE__);
	  return -1;
	}
	LOGI("start Create the Android Graphic Buffer...,nWidth=%d,nHeight=%d",nWidth,nHeight);
	//step 2. Create the Android Graphic Buffer

	buffer = (void*)new GraphicBuffer(nWidth, nHeight,
	   HAL_PIXEL_FORMAT_RGBA_8888,
	   GraphicBuffer::USAGE_HW_TEXTURE |
	   GraphicBuffer::USAGE_HW_2D |
	   GraphicBuffer::USAGE_SW_READ_OFTEN);
	LOGI("start Init the buffer...");
	// Init the buffer
	status_t err = ((GraphicBuffer*)buffer)->initCheck();
	if (err != NO_ERROR)
	{
	  LOGE("InitCheck return error: %s\n", strerror(err));
	  return -1;
	}
	// Retrieve andorid native buffer

	//step 3. Create the EGLImage
	const EGLint attrs[] = {
	   EGL_IMAGE_PRESERVED_KHR, EGL_TRUE,
	   EGL_NONE, EGL_NONE
	};
	g_eglDisplayHandle = eglGetCurrentDisplay();
	android_native_buffer_t* clientBuf = ((GraphicBuffer*)buffer)->getNativeBuffer();
	if(clientBuf == NULL)
	{
		LOGE("clientBuf == NULL!");
		return -1;
	}
	LOGI("start eglCreateImageKHR...");
	pEGLImage = n_eglCreateImageKHR(g_eglDisplayHandle, eglGetCurrentContext(), EGL_NATIVE_BUFFER_ANDROID,
						clientBuf, attrs);
	if (pEGLImage == EGL_NO_IMAGE_KHR) {
	  EGLint error = eglGetError();
	  //TODO: free GraphicBuffer
	  LOGE("Error (%#x): Creating EGLImageKHR at %s:%i\n", error, __FILE__, __LINE__);
	  return -1;
	}
	LOGE("End init");
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值