gpt4 book ai didi

android - 使用 Qualcomm SDK 的基于标记的 AR android 应用程序

转载 作者:行者123 更新时间:2023-11-29 22:20:58 25 4
gpt4 key购买 nike

我正在开发一个 android 应用程序,当特定电影的海报在 android 中的相机前面显示时,会播放特定视频。早些时候我使用 AndAr 项目来处理这些东西,我对 customObject 的 draw() 函数做了一些更改并让它工作。但现在我的客户要我使用 Qualcomm sdk 。我正在玩图像目标应用程序,但找不到任何东西进入我的脑海。

最佳答案

好的,我让它工作了。以下是我从这个链接得到的解决方案

https://ar.qualcomm.at/arforums/showthread.php?t=32

我拥有的 imagetargets.cpp 已经有了方法 renderFrame所以我不得不稍微修改一下

  JNIEXPORT void JNICALL
Java_com_qualcomm_QCARSamples_ImageTargets_ImageTargetsRenderer_renderFrame(JNIEnv*
env, jobject obj)

{
//LOG("Java_com_qualcomm_QCARSamples_ImageTargets_GLRenderer_renderFrame");

// Clear color and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// Render video background:
QCAR::State state = QCAR::Renderer::getInstance().begin();

#ifdef USE_OPENGL_ES_1_1
// Set GL11 flags:
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

glEnable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);

#endif

glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);

// Did we find any trackables this frame?
for(int tIdx = 0; tIdx < state.getNumActiveTrackables(); tIdx++)
{
// Get the trackable:
const QCAR::Trackable* trackable = state.getActiveTrackable(tIdx);
QCAR::Matrix44F modelViewMatrix =
QCAR::Tool::convertPose2GLMatrix(trackable->getPose());

// Choose the texture based on the target name:
int textureIndex = (!strcmp(trackable->getName(), "stones")) ? 0 : 1;
const Texture* const thisTexture = textures[textureIndex];

jstring js = env->NewStringUTF(trackable->getName());
jclass javaClass = env->GetObjectClass(obj);
jmethodID method = env->GetMethodID(javaClass, "displayMessage", "(Ljava/lang/String;)V");
env->CallObjectMethod(obj, method, js);

}

glDisable(GL_DEPTH_TEST);

#ifdef USE_OPENGL_ES_1_1
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
#else
glDisableVertexAttribArray(vertexHandle);
glDisableVertexAttribArray(normalHandle);
glDisableVertexAttribArray(textureCoordHandle);
#endif

QCAR::Renderer::getInstance().end();
}

在对 imageRenderer 类进行更改后,我在简历中添加了以下代码:-

   ImageTargetsRenderer.mainActivityHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.youtube.com/watch?v=DyDA2Abnssg"));
startActivity(intent);
ImageTargets.this.finish();
}
};

关于android - 使用 Qualcomm SDK 的基于标记的 AR android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7187248/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com