![](/img/trans.png)
[英]Getting pose data for OpenGL Coordinate System using Google Tango with Unity
[英]Using OpenGL ES 3.1 on Google Tango
我正在嘗試通過調用“ TangoService_connectTextureId”從探戈api獲取相機圖像。
問題是,沒有定義“ GL_TEXTURE_EXTERNAL_OES”,因此我無法創建外部紋理對象。 所有樣本僅使用ES 2,但是在這種設備上具有這種局限性只是愚蠢的。
也許是我的錯,所以這是我的設置:
包括:
#include <GLES3/gl3.h> #include <GLES3/gl3ext.h> #include <GLES3/gl3platform.h> #include <EGL/egl.h> #include <EGL/eglext.h>
我反對:
tango_client_api GLESv3 EGL
傳遞TangoService_connectTextureId到的紋理應該這樣創建(在使用GL_TEXTURE_2D時不起作用,因為圖像保持黑色):
glGenTextures(1, &texture_id_); glBindTexture(GL_TEXTURE_EXTERNAL_OES, texture_id_); glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glBindTexture(GL_TEXTURE_EXTERNAL_OES, 0);
我發現了一些提示並使其起作用:
https://www.khronos.org/registry/gles/列出要包含的標題。
包含gl2ext.h的GLES 3.0描述了一種在API 19中實際使用標頭的技巧。
所以現在對我有效:
#include <GLES3/gl3.h>
#define __gl2_h_ // what the f***
#include <GLES2/gl2ext.h>
#include <GLES3/gl3platform.h>
要在着色器中處理圖像,可以從以下片段程序開始:
#version 300 es
#extension GL_OES_EGL_image_external : require
precision highp float;
// input
uniform samplerExternalOES InputTexture;
in vec2 v_TexCoord;
// output
layout(location = 0) out vec4 OutputColor;
void main()
{
vec2 flippedCoord = vec2(v_TexCoord.x, 1.0 - v_TexCoord.y);
OutputColor = texture2D(InputTexture, flippedCoord);
OutputColor.a = 1.0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.