按钮和GLSurfaceView
我有一个glsurfaceview,我在其中使用opengl显示一些动画. 我现在想在此视图中添加一个按钮.这是如何完成的? 可以在不涉及XML布局的情况下完成吗? 解决方案 您可以手动构建并将视图添加到活动的内容视图中.在您的活动中的on Create方法中,在GLSURFACEVIEW上或通过XML布局进行setContentView后,您可以执行以下操作,该方法将在左上角的Glsurfaceview上添加一个按钮: Button b = new Button(this); b.setText("Hello World"); this.addContentView(b, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 如果您希望按钮在屏幕上的其他位置,则需要将其添加到布局中,然后将该布局添加到内容视图中.要在屏幕中央有一个按钮,
8 2024-04-05
编程技术问答社区
使用XML/Java的Android glSurfaceView与叠加功能
我启动了一个Android OpenGL应用程序,我有以下类: class A extends Activity class B extends GlSurfaceView implements Renderer 当A类称为A类时,它会创建一个类型B类的对象并调用: setContentView(Bobject) 到目前为止,它可以工作,我花了几天的时间. 现在,我想将按钮添加到我的应用程序中,并找到了SurfaceViewOverlay示例.这使用一些XML创建视图层次结构.我想创建与我简单地剪切并粘贴XML代码的东西:
18 2024-04-05
编程技术问答社区
[Cocos2d]如何从GlSurfaceView创建位图
如何在Cocos2d中拍摄GlSurfaceView的屏幕截图.我尝试使用GLsurfaceView 以下代码. GlsurfaceView glv=CCDirector.sharedDirector().getOpenGLView(); glv.setDrawingCacheEnabled(true); Bitmap bitmap=glv.getDrawingCache(); 但它返回透明图像. 解决方案 我从此请在"启动"中将此代码放入Renderer类OnDraw方法中. public static Bitmap SavePixels(int x, int y, int w, int h, GL10 gl) { int b[]=new int[w*h]; int bt[]=new int[w*h]; IntBuffer ib=IntBuffer.wrap(b); ib.position(0);
8 2024-03-31
编程技术问答社区
如何从GLSurfaceView保存位图(只有位图,没有整个纹理)。
我正在使用此代码对GLSURFACEVIEW上的位图产生多重影响. apply-effects-on-image-in-image-in-image-ins-in-imeffects-inder-insefects 现在,我想保存位图.他们给出了保存位图的代码,但是这样,整个glsurfaceview将保存为位图映像.相反,我只想保存位图区域以将其保存为图像. 有一些方法可以使用像素并从中制作位图并制作图像. 例如: public Bitmap takeScreenshot(GL10 mGL) { final int mWidth = mEffectView.getWidth(); final int mHeight = mEffectView.getHeight(); IntBuffer ib = IntBuffer.allocate(mWidth * mHeight); IntBuffer ibt = IntBuffer.allocate(mWi
20 2024-03-31
编程技术问答社区
具有可绘制背景的安卓GLSurfaceView
我有一个带有可绘制作为背景的glsurfaceview,但是只有在没有SurfaceView.setzorderopop(true) 的情况下可见背景. 我需要避免使用setzorderOntop(true),因为在Glsurfaceview的顶部使用了静态文本视图. 有什么建议让它起作用? 解决方案 glsurfaceview实际上无法真正具有背景.表面视图的工作方式是切开活动的窗口并在后面显示另一个表面.设置setzorderontop(true)移动活动窗口上方的表面. 其他解决方案 false!你能行的. 只是一个示例来显示其工作原理. glRenderer = new OpenGLRenderer(context); view = new GLSurfaceView(context); view.setEGLConfigChooser(8, 8, 8, 8, 16, 0); view.setRenderer(glRenderer); view.
8 2024-03-27
编程技术问答社区
如何在安卓系统的glsurface视图渲染器中动态地添加3D模型?
在我的增强现实应用程序中,我需要通过标记渲染3D模型.使用预定义的/初始化的3D模型,我可以通过标记效率显示茶壶.但是现在,我想在某些触发事件中,将其从SD卡动态地替换为另一个3D模型,例如单击按钮.有什么建议或指南如何实施?我正在使用JPCT-AE进行3D模型. thanx 解决方案 经过大量的研究和试验和错误,我终于使它开始工作. 当我问这个问题时,我想通过从SD卡上的远程服务器下载并渲染它来动态地通过标记显示3D模型. 您可以使用Rajawali API这样做 getCurrentScene().removeChild(myCurrentObj); ObjParser parser = new ObjParser(this, 'mydir\myfile.obj'); parser.parse(); getCurrentScene().addChild(parser.getParsedObject());
16 2024-03-19
编程技术问答社区
视频播放时,ViewFlipper中的VideoView是透明的
我有一项活动,其中有两个视图在ViewFlipper中设置了.其中一个视图是带有GLSURFACEVIEW和其他一些小部件的布局,而另一个则具有带有文本视图和视频的布局.当我单击Glsurfaceview中的某些内容时,ViewFlipper交换可以播放视频.在此屏幕截图中,您可以在左侧看到Plain Glsurfaceview呈现地图.右边是ViewFlipper翻转并开始播放视频后的样子. glsurfaceview所示的空的透明区域是视频应该在哪里.我可以听到扬声器的播放,并且时间表正在向前发展,所以我知道它正在播放. 如果您需要,我可以发布代码,但是涉及很多,因此可能会变得相当复杂. 关于这里发生了什么的想法? 解决方案 在重叠的活动中,您不能有两个SurfaceViews,我怀疑包括ViewFlipper之类的案例,从技术上讲,它们由于可见性的变化而不会重叠.
4 2024-02-19
编程技术问答社区
在安卓ndk上的OpenGLES 1.1中带有GLSurfaceView模式的FrameBuffers
在Android NDK中,可以使OpenGL ES 1.1与典型的Java侧GlSurfaceView模式(glsurfaceview.renderer OndrawFrame,onsurfacececececreated等)一起使用,同时在C ++侧面框架,颜色和深度,颜色和深度,缓冲区和VBO? 我正在尝试使用以下方式创建它们: void ES1Renderer::on_surface_created() { // Create default framebuffer object. The backing will be allocated for the current layer in -resizeFromLayer glGenFramebuffersOES(1, &defaultFramebuffer); glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
20 2024-02-17
编程技术问答社区
使用MediaCodec录制一个表面
因此,在我的应用程序中,我能够使用 gpuimage 库. 基本上,i(库)将从相机中获取输入,获取原始字节数据,将其转换为YUV格式的RGBA格式,然后将效果应用于此图像,并在GLSurfaceView的Surface上显示效果OpenGL.最后,对于用户来说,它看起来像是应用效果的视频. 现在,我想使用但是,此讨论说我们不能将预定义的Surface传递给MediaCodec. 我在 bigflake 中他正在使用MediaCodec.createInputSurface()来创建MediaCodec.createInputSurface(),但对我来说, ,Surface来自GLSurfaceView. 那么,如何将Surface的帧记录为视频? 我将录制音频差异,使用ffmpeg合并视频和音频,并作为带有效果的视频呈现给用户. 解决方案 您可以在 grafika . 特别是,"显示 +捕获相机"活动将相机输出记录为.mp4.它还演示在GL着色
14 2024-02-17
编程技术问答社区
Nexus 5上的GLSurfaceView帧速率问题
我有一个示例应用程序( full source full source )在Glsurfaceview上显示它们. systrace确认每秒钟进行30个绘图电话: 但是,ScreenRecord录制(简而言之,我的编码和显示循环执行以下操作: 使MediaCodec表面输入EGL上下文当前 将相机框架绘制到MediaCodec EGL Surface 使glsurfaceview egl上下文当前 将相同的相机框架绘制到Glsurfaceview 在Galaxy Nexus LTE和Nexus 7(均为AOSP 4.4)上,应用程序按预期执行.到目前为止,只有Nexus 5经历了屏幕绘制的帧数与帧数明显的差异之间的差异... 我祈祷我不会发疯. 解决方案 我能够复制行为,而我的GL向导办公室伴侣弄清楚了问题. 基本上,EGL上下文之一并没有注意到纹理内容已更改,因此它不断渲染较旧的数据.我们认为它偶尔会更新,因为它具有一组循环的缓冲区,因
24 2024-02-17
编程技术问答社区
屏蔽和剪辑GLSurfaceView
我与SDK一起使用,该SDK通过回调提供矩形GLSURFACEVIEW. 我希望能够在圆形布局中呈现此视图. (即)我想在圆形视图上显示视图 我尝试使用蒙版布局,例如使用蒙版布局 (非常适合图像,不适合视频) 我该如何将其作为一个圆圈进行剪辑和渲染? (背景正在不断变化,所以我不能在此视频视图的顶部覆盖透明视图.目的是在上面有一个矩形的glsurface视图,顶部有一个圆形的glsurface视图) ** UI目标:** 解决方案 我现在对项目有几乎相同的要求,这涉及掩盖 pexkit .对我有用的解决方案是制作Framelayout(或任何其他ViewGroup)的子类,并将GlsurfaceView放在其中. 然后在Framelayout子类中使用Canvas.clippath: private Path clippingPath; @Override protected void onSizeChanged(int w, int
20 2024-02-16
编程技术问答社区
GLSurfaceView没有出现在MapView上
我的目标是使用Google Maps使用OpenGL ES 2.0.我想创建一个关注用户从A点到达的应用程序.我意识到可以使用Google Maps AddPolyline绘制一条线路,但是我想使用OpenGL而改为使用OpenGL来显示重叠路径.我目前正在收到一个错误,该错误是由于错误设置GLSurfaceView所致. 我在GoogleMapStracker类中的代码如下: private MapView mapView; private GoogleMap map; private GLSurfaceView mGLSurfaceView; /** * Use this factory method to create a new instance of * this fragment using the provided parameters. */ public static GoogleMapsTracker newInstance() { Goo
8 2024-02-16
编程技术问答社区
如何在android的glSurfaceView上面建立GUI/HUD?
我有一个看起来像这样的glSurfaceView: public class GLLayer extends GLSurfaceView implements SurfaceHolder.Callback, Camera.PreviewCallback, Renderer { private Context context; private Circle cRing; private CompassNeedle cNeedle; private MarkerNorth mNorth; private MarkerEast mEast; private MarkerSouth mSouth; private MarkerWest mWest; private MarkerSouthWest mSWest; private MarkerSouthEast mSEast; private MarkerN
8 2024-02-16
编程技术问答社区
如何在同一个布局中使用多个GLSurfaceView组件?
我正在为Android编写信息可视化API,并遇到了一个问题,试图将自定义的两个单元放入布局中.此时,自定义GLSurfaceView只是GLSurfaceView的扩展,以消除由自定义方法引起的可能的故障. 当我在布局中添加两个组件并启动其运行的应用程序时.但是什么都没有绘制,似乎它进入了一个无限的循环.因为渲染器内部的调试消息被打印到logcat中.但是,如果我只使用自定义GLSurfaceView组件之一,它的工作正常. 我读到在多个活动中使用GLSurfaceView存在问题,我想同时使用两个组件时也适用.我尝试了发布的解决方法,在这里要工作. 我感谢任何帮助.我选择使用OpenGL来表现更好的性能,但是如果我不能一次使用多个组件,我想我必须使用帆布. 清单看起来如下:
26 2024-02-15
编程技术问答社区
glsurfaceview在滚动视图内,移动但不剪切
我有一个内部有线性布局的卷轴.该线层中的元素之一是glsurfaceview. 这一切都可以正常工作,当我滚动时,glsurfaceview上下移动时,当glsurfaceview到达应该剪切的卷轴的顶部或底部时,它不应该剪切,并且在滚动浏览的外面.此屏幕截图应该使其更清晰: 不要以为它是完整的,但这是我的layout.xml:
18 2024-02-15
编程技术问答社区
将GLSurfaceView重叠在SurfaceView上,反之亦然
exoplayer- SurfaceView Camera2 + MediaCodec -Glsurfaceview 我正在使用上面的视图组来播放视频和相机录制. ui-1: exo-surf 在右上角, cam-gls . ui-2: cam-gls 在右上角 exo-surf . 为了实现这一目标,我正在使用 setzorderontop 设置z索引,因为两者都在Relativelayout内部. (exoPlayerView.videoSurfaceView as? SurfaceView)?.setZOrderOnTop(true/false) 在三星S9+上使用API​​ 29- android 10,以及API 28. 但对于API 21-27,它的行为与某些随机问题有关. dash-a surfaceview/glsurfaceview的顶部不可见 dash-b surfaceview/glsurfaceview的底部不
50 2024-02-13
编程技术问答社区
通过GLSurfaceView修改和更新相机框架
我正在使用GLSurfaceView活动,以在Android设备上显示相机框架.当我在OpenGl Es>中是新手时,我想知道如何获得图像缓冲区并修改它,然后在手机上显示修改后的帧? 在实现GLSurfaceView.Renderer的渲染器类中,我称之为本机函数: public class Renderer implements GLSurfaceView.Renderer { public void onDrawFrame(GL10 gl) { MyJNINative.render(); } ... } 我正在与之合作的API提供了connectCallBack方法,该方法可以通过onFrameAvailableNow之类的东西访问图像缓冲区. 因此,我已经拥有const类型的图像缓冲区.因此,我对它的修改不会被反映. 现在我的问题是如何添加一些gl方法来修改可以在显示屏上反映的图像缓冲区? 我的本​​地渲染器: Java_com_p
2 2024-02-13
编程技术问答社区
使用GLsurfaceview修改相机预览的效果
我已经创建了一个自定义的相机应用程序,我正在使用GLsurfaceview,GLSurfaceview.Renderer创建相机预览.我已经成功完成了它,现在正在尝试在相机预览中应用过滤器(棕褐色模式,空白n白色等).我如何在相机预览中应用效果. 正常视图 应用过滤器 这是我的glsurfaceview.renderer public class MainRenderer implements GLSurfaceView.Renderer,SurfaceTexture.OnFrameAvailableListener{ private final String vss = "attribute vec2 vPosition;\n" + "attribute vec2 vTexCoord;\n" + "varying vec2 texCoord;\n" + "
16 2024-02-13
编程技术问答社区