2015-11-17 2 views
2

Я пытаюсь получить изображение камеры из tango api, вызвав TangoService_connectTextureId.Использование OpenGL ES 3.1 в Google Tango

Проблема в том, что не определено «GL_TEXTURE_EXTERNAL_OES», поэтому я не могу создать внешний объект текстуры. Все образцы используют только ES 2, но это ограничение просто глупо на таком устройстве.

может быть, это моя вина, так что здесь моя установка:

  • Visual Studio 2013 с расширением Nsight Tegra.
  • Включает:

    #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); 
    

ответ

3

Я нашел несколько советов и получил его:

https://www.khronos.org/registry/gles/ перечисляет заголовки для включения.

GLES 3.0 including gl2ext.h описывает хак на самом деле использовать заголовки с 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; 
} 
Смежные вопросы