2017.08.04 通过openGL纹理在Unity中获取摄像机图像
来源:互联网 发布:cf手游咪咕刷枪软件 编辑:程序博客网 时间:2024/05/22 03:03
主要代码如下 :
IEnumerator Start()
{Image_left = new Texture2D(m_videoWidth, m_videoHeight, TextureFormat.ARGB32, false); //在Unity中创建2D纹理
Image_left.filterMode = FilterMode.Point; //设置参数
Image_left.Apply();
GetComponent<Renderer>().material.SetTexture("_mainTex", Image_left);
GetComponent<Renderer>().material.SetFloat("_tex_start", 0.0f);
GetComponent<Renderer>().material.SetFloat("_tex_end", 1.0f);
GetComponent<Renderer>().material.SetFloat("_tex_offset", 0.0f);
NativeLib.SetCamTex(Image_left.GetNativeTexturePtr()); //自定义的一个dll插件Nativelib,功能是将Image_left的纹理指针传递到openGL中
yield return StartCoroutine("CallPluginAtEndOfFrames");
}
private IEnumerator CallPluginAtEndOfFrames()
{
while (true)
{
// Wait until all frame rendering is done
yield return new WaitForEndOfFrame();
GL.IssuePluginEvent(1); //重点!!!绘图线程将隐式调用插件DLL中的UnityRenderEvent
}
}
/***************************nativelib***********************/
static void* m_TexturePointer ;
void _DLLExport SetCamTex(void* texturePtr){
m_TexturePointer = texturePtr;
}
void _DLLExport UnityRenderEvent(int eventID){
glDisable(GL_CULL_FACE);
...//这里是openGL的东西,随便你设置了
DoRending(); //自定义的渲染函数
}
void DoRending(){
GLuint glTex = (GLuint)(size_t)(m_TexturePointer);//获取纹理指针,下面都是openGL的那一套
glBindTexture(GL_TEXTURE_2D,glTex);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, height, GL_BGR_EXT, GL_UNSIGNED_BYTE, m_Tex.data);
}
最后,填个小坑:如果在linux下运行没问题,如果是win下,要右键Unity.exe 在后面加上 -force-opengl
阅读全文
0 0
- 2017.08.04 通过openGL纹理在Unity中获取摄像机图像
- unity在shader中获取当前摄像机的方向向量
- 在OpenGL中理解摄像机标定
- 在OpenGL中使用纹理压缩
- 在OpenGL中使用纹理压缩
- 在OpenGL中进行多纹理贴图
- 在OpenGL中进行多纹理贴图
- 【Unity】Unity中通过纹理截屏将图片保存到本地
- FreeImage读取纹理,在OpenGL中实现透明纹理
- Unity中摄像机
- Unity中摄像机自适应
- Unity中通过按键更换材质球纹理图片
- opengl中添加纹理
- unity中判断渲染物体是否在摄像机内渲染
- 在OpenGL中使用各异向性纹理过滤
- 在OpenGL中实现多纹理混合(Multi-texture Blending)
- 在OpenGL中使用整数类型纹理进行计算
- 在OpenGL中使用整数类型纹理进行计算【转】
- opencv获取灰度图像直方图
- Spring MVC的UrlBasedViewResolver和InternalResourceViewResolver
- Arduino小车PID自整定调速——菜鸟也来写PID自整定库
- 快速排序及其变种 Java
- spark-2.2.0 集群安装部署以及hadoop集群部署
- 2017.08.04 通过openGL纹理在Unity中获取摄像机图像
- oracle 建表、建sequence序列、删除表中列、列加注释、增加表中列
- Spring Aspectj 代理 前置 后置 以及 异常
- 解决 PermGen space Tomcat内存设置
- VS2012编译opencv3.2.0
- adaboost.M1与adaboost.M2差别比较
- 修改linux时区
- HDU 2089-不要62(入门数位DP)
- 视频投票之每日一票-jquery.cookie.js篇