簡體   English   中英

在Google Tango上使用OpenGL ES 3.1

[英]Using OpenGL ES 3.1 on Google Tango

我正在嘗試通過調用“ TangoService_connectTextureId”從探戈api獲取相機圖像。

問題是,沒有定義“ GL_TEXTURE_EXTERNAL_OES”,因此我無法創建外部紋理對象。 所有樣本僅使用ES 2,但是在這種設備上具有這種局限性只是愚蠢的。

也許是我的錯,所以這是我的設置:

  • 帶有Nsight Tegra擴展的Visual Studio 2013。
  • 包括:

     #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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM