你能从一个iOS C插件中 "当场 "写到Unity纹理吗?
说您有一个iOS的低级统一插件, 所以在C# 中 using System.Runtime.InteropServices; using AOT; public class Teste: MonoBehaviour { [DllImport("__Internal")] private static extern void set_texture_from_unity(System.IntPtr texture, int w, int h); 具有纹理,.Apply() it,然后将指针发送到本机iOS插件: public void ClickPassTexture() { tex = new Texture2D(256, 256, TextureFormat.ARGB32, false); tex.filterMode = FilterMode.Point; tex.Apply(); // ACTUALLY UP
0 2024-04-21
编程技术问答社区
使用openGL ES 2.0的字体渲染(Freetype)与其他画线功能相结合,无法工作
此线程与https://stackoverflow.com/questions/50955558/render-fonts-with-with-sdl2-epengl-es-2-0-glsl-1-0-glsl-1-0-freetype 我在组合字体渲染并使用此函数的情况下有一个问题: // Create VBO (Vertex Buffer Object) based on the vertices provided, render the vertices on the // background buffer and eventually swap buffers to update the display. // Return index of VBO buffer GLuint drawVertices(SDL_Window *window, Vertex *vertices, GLsizei numVertices, int mode){ // Number of
0 2024-04-10
编程技术问答社区
OpenGL ES的片段着色器可以改变片段的深度值吗?
openGL ES 2.0中的片段着色器可以更改像素的z值(深度)? 在OpenGL ES 2.0中如何实现? 解决方案 否 - gl_FragDepth(这是GLSL的桌面版本的一部分)不存在于OpenGles. 中 但是,您可以检查GL_EXT_frag_depth的存在.如果可用,则可以将深度写入gl_FragDepthEXT. 扩展纸扩展等等. 其他解决方案 而gl_fragDepth在OpenGL ES 2.0中不可用,IS 可从3.0版中获得,因此,除非您需要使用较旧的版本来兼容,否则升级是可以进行的.
0 2024-04-08
编程技术问答社区
在openGL中使用glGenBuffers时出现空屏
#include #include #include #include void changeSize(int w, int h) { if(h == 0) h = 1; float ratio = w / h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0, 0, w, h); gluPerspective(40,ratio,1.5,20); glMatrixMode(GL_MODELVIEW); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT ); glLoadIdentity(); glTranslatef(0.0,0.0,-5.0); glDrawA
0 2024-04-07
编程技术问答社区
glOrtho OpenGL es 2.0变体如何修复空白屏幕?
我尝试重新制作Android 到Android NDK OpenGL ES 2.0示例. 除了制作拼字法/透视投影 之外,我都取得了成功 所以我画了一个三角形 typedef matrix float matrix[16]; matrix MVP_MATRIX; /* MODEL*VIEW*PROJECTION MATRIX */ matrix PROJECTION_MATRIX; matrix MODEL_MATRIX; matrix VIEW_MATRIX; s_shader shader; /* just struct for holding shader program data (attribytes,uniforms, fragment shader, vertex shader etc)*/ GLfloat triangle_vertices[] = { 0.0f, 0.5f, 0.
2 2024-04-07
编程技术问答社区
opengl es 2.0 填充顶点和索引 Buffer
这似乎是一个愚蠢的问题,但我觉得我需要问它,以便我可以理解OpenGL缓冲区的工作方式. 我有两个缓冲区,即顶点缓冲区和索引缓冲区.要填充这些缓冲区,我正在解析一个OBJ文件. 解析数据后,我用我认为正确的数据和数据顺序填充缓冲区. 但是,当我调试代码时,我会在缓冲区中看到一些奇怪的东西. 首先是顶点缓冲区.我在Vbuffer中放置的前3个值是 0.99,-0.99,-0.7741 但是,当我通过逐渐浏览值检查缓冲区时 -92,112,125 这是因为这是一个floatbuffer,但作为字节缓冲区? this.vertexBuffer = ByteBuffer.allocateDirect(VertexList.length * mBytesPerFloat).order(ByteOrder.nativeOrder()).asFloatBuffer(); this.vertexB
2 2024-04-04
编程技术问答社区
glMapBuffer在OpenGL-ES 2.0中未被声明。
我通过使用kronos和pvrsdk在ununtu 10.10中进行OpenGL-ES 2.0. #include #include ========================================================================================== ================ GLfloat *pData = glMapBufferOES (GL_ARRAY_BUFFER, GL_WRITE_ONLY_OES); for(i=0; i
4 2024-04-04
编程技术问答社区
在特定的层中进行Box2D调试绘制
今天,我找到了解决方案如何进行调试绘制C ++中的Box2D形状,但我无法绘制特定层.您能帮我了解绘制它的位置,以便我可以将Box2D形状绘制在我的精灵上.我想把它们带到前面. 解决方案 您可以简单地在当前图层上方添加另一层. ,您可以在上层添加您在此处发布的代码,然后所有内容都应该工作.
14 2024-04-03
编程技术问答社区
在android opengl es 2.0中创建一个绘制的正方形的位图
我已经使用OpenGL ES 2.0绘制了一个正方形,现在我想创建一个绘制正方形的位图.谁能指导我如何做?请让我知道我的问题是否不清楚.谢谢 解决方案 它是使用glreadpixels()完成的.这很慢,但是是Android上OpenGL ES 2.0的唯一方法.在Java中: Bitmap buttonBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); ByteBuffer byteBuffer = ByteBuffer.allocateDirect(mWidth * mHeight * 4); GLES20.glReadPixels(0, 0, mWidth, mHeight, GLES20.GL_RGBA, GLES20.GL_UNSIGNED_BYTE, byteBuffer); buttonBitmap.copyPixelsFromBuffer(byteBuffer);
2 2024-03-31
编程技术问答社区
Opengl es 2.0在视频上绘制位图叠加图
我试图在视频的每个帧上绘制一个位图作为覆盖层.我找到了一个有关如何解码和编码视频的示例,并且它正在工作.此示例具有带有drawFrame函数的Texturerenderer类,我需要修改,以添加位图.我是OpenGL的新手,但我了解到我需要用位图创建纹理并绑定它.我在以下代码中尝试了这一点,但正在抛出例外. /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0
6 2024-03-31
编程技术问答社区
在java中把4个浮点的颜色变成一个浮点,在openGL ES 2.0着色器中又变成一个浮点。
我试图将一种颜色发送给着色器的每个顶点,但只有一个浮点值.我认为您无法将4个字节发送为每个顶点的属性很奇怪,但是感觉到我不可能尝试将RGBA打包到一个float变量中,所以这是我的代码: jave代码(将值包装在一个浮标中): private float fourfColor2One(float r, float g, float b, float a) { long temp = (byte) (r * 255); float res = temp
2 2024-03-31
编程技术问答社区
GLSurfaceView-如何制作半透明的背景
我尝试使用glsurfaceview和getHolder().setFormat(PixelFormat.TRANSLUCENT); i使用glsurfaceview.renderer,绘制on DrawDrame: GLES20.glClearColor(0, 0, 1, .5f); GLES20.glClear(GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT); 但是,GlSurfaceView中的GL渲染不是半透明的,并且是完全蓝色的.如果我省略了glclear呼叫,那么它是完全黑色的. 如何使GL渲染具有透明的背景,以便将其与它背后的视图混合? 编辑:这是我的glsurfaceview: class GLView extends GLSurfaceView{ MyRenderer r; public GLView(Context ctx){ super(ctx
2 2024-03-26
编程技术问答社区
iPhone上的BGRA glTexImage2D和glReadPixels
查看文档,我应该能够将BGRA用于纹理的内部格式.我正在提供BGRA数据(使用GL_RGBA8_OES用于GlrenderBufferstorage,因为似乎不允许使用Bgra).但是,以下内容不起作用: glTexImage2D(GL_TEXTURE_2D, 0, **GL_BGRA**, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer); ... glReadPixels(0, 0, w,h, GL_BGRA, GL_UNSIGNED_BYTE,buffer, 0); 虽然这给了我一个黑色的框架: glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_BGRA, GL_UNSIGNED_BYTE, buffer); ... glReadPixels(0, 0, w,h, **GL_BGRA**, GL_UNSIGNED_BYTE,buffer, 0); 这确实有效,但是蓝色/红
6 2024-03-21
编程技术问答社区
我应该何时调用CVPixelBufferLockBaseAddress和CVPixelBufferUnlockBaseAddress?
在ios6中,我正在使用OpenGL对Avoundation视频帧进行一些渲染.我已经看到了很多示例代码,这些代码使用CVPixelBufferlockbaseaddress和cvpixelbufferunlockbaseaddress,但是我尚不清楚何时执行锁定和解锁,或者为什么要这样做.当CPU修改内存时,我应该锁定地址吗?还是GPU从中读取它时应该锁定它?我什么时候应该解锁?为什么我什至想解锁?我已经看过这个堆叠溢出答案回答我的问题. 解决方案 您应该在每次需要使用它时锁定,并在完成后解锁并且不再需要它.这样可以防止缓冲区被覆盖,这可能使其处于不一致的状态. 固件专家曾经对我解释了这一点:总的来说,当处理视频输出时,您应该注意一些与指针的间接参考,就像说:"嘿,我是我的,我正在使用它,指向下一个框架在其他地方". 我无法根据您的应用程序说出何时不再需要缓冲区,但这是您应该能够弄清楚的.如果您在其他地方复制了缓冲区数据(例如创建新对象),则意味着您可以解锁它.
2 2024-03-21
编程技术问答社区
为什么我的对象列表都是一样的?
我已经列出了一段时间的对象列表,以在我编程的游戏中制作多个对象.直到现在我还没有问题.我使用for循环创建3个对象,将每个对象具有自己的值,然后将它们添加到数组列表中.不幸的是,当我尝试此对象时,每个对象都具有相同的值,我通过日志发现的是列表中最后一项的值.我不确定我在做什么错.这是我正在使用的代码(我很抱歉.这很草率,我只是在试图对该项目的核心进行编程.我知道有很多无用的代码/编程不正确的代码/编程编程不正确的代码,我知道) glcircle.java(我要制作的对象): package com.background.gl.objects; import static android.opengl.GLES20.GL_TRIANGLE_FAN; import static android.opengl.GLES20.glDrawArrays; import static android.opengl.Matrix.multiplyMM; import static andr
6 2024-03-04
编程技术问答社区
我怎样才能在安卓系统中的独立线程上运行GLES20.glReadPixels?
我目前正在与Arcore合作以对图像进行分类并将对象放在图像上.但是,似乎Arcore相机没有提供任何获得PixelBuffer的方法.然后我来了如何使用Arcore 如何使用相机拍照据此,我们可以使用 gles20.glreadpixels 从OpenGL复制帧.如果我一次通过每个帧,则分类器的工作正常,但是当我放置 gles20.glreadpixels 以在单独的线程中获取像素缓冲区时,我将获得所有零.因此,基本上它给了我黑色的图像. 因此,是否有一种方法可以在单独的线程上运行 GLES20.GLREADPIXEL . 解决方案 OpenGL,对于Android平台OpenGL ES设计为一个面向线程的库.这并不意味着您无法使用OpenGL ES的多个线程工作,但这不是与OpenGl一起使用的标准方法. 根据我的经验,我需要异步加载纹理.为此,需要在另一个线程中创建一个OpenGL上下文.请注意,没有每个设备都支持创建两个OpenGL上下文的功能.我创建以下类来管理异
4 2024-03-03
编程技术问答社区
在安卓应用中使用标签云的球形动画与文本 [News Republic]
我想在我的Android应用中创建球形动画,类似于 a> in 我试图创建一个 sphere 到目前为止,任何人都可以指导我如何指导我继续在Android中开发这样的动画. 我们必须仅使用OpenGL,否则我们可以使用其他替代选项实现它. 另外,当单击文本时,它将在其他屏幕中打开相关新闻. 编辑 我终于找到了一些解决方案,可以在此软件包. 但是,动画不够平滑. 让我知道是否有人可以帮助我平滑动画? 解决方案 您不需要OpenGL.您可以使用简单的视图和画布来做到这一点.我为你写了一些代码.您可以将其复制到您的项目,添加到XML并运行: import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.Attribut
2 2024-02-26
编程技术问答社区
安卓模拟器黑屏,"GPU仿真-是"
我正在尝试使用Android AVD功能" GPU仿真 - 是"的新功能 需要在模拟器上使用GLES2.0. 但是,当我打开它时,模拟器的屏幕空白. 解决方案 对于那些有相同问题的人,并拥有带有擎天柱的NVIDIA卡... 只需安装铁皮! sudo apt-add-repository ppa:mj-casalogic/ironhide sudo apt-get update sudo apt-get upgrade sudo apt-get install ironhide 然后按照说明重新启动!魔术发生了!但这有时很难!
6 2024-02-19
编程技术问答社区
使用CMake在Android Studio中为NDK应用添加静态预建库和GLESv2支持
这是一个2部分问题. 目前,我正在将当前的构建设置(Eclipse; NDK-Build)转换为(希望)更好的一个(Android Studio; Cmake). 我要沿着CMAKE路径走,因为我读到这是进行不错的调试正常工作而无需实验性Gradle插件的唯一方法(如果您确定这是错误的,请让我知道). 好的,我遇到的第一个问题只是链接静态预构建的库,例如我必须使用的boost的预构建版本. 使用以下策略,我获得了一些成功: 添加一个库作为静态预制库,该库在全球范围内搜索: add_library(boost_thread STATIC IMPORTED GLOBAL) 设置预制库的位置: set_target_properties(boost_thread PROPERTIES IMPORTED_LOCATION boost/lib/libboost_thread_pthread-gcc-mt-s-1_55.a) 链接库时,请使用存储的值进行预构建库: targe
2 2024-02-18
编程技术问答社区
安卓, 本地OpenGL/OpenMAX, 屏幕捕捉
用例 使用USB 镜像Android屏幕到PC 电势(本机)实施方法 Using Android Open-Source, modify screenrecord 根据您的需求,并使用ADB重新安装了ADB 使用众所周知的本地API,例如 讨论 方法#1 肯定会起作用(在Shell帐户下), ,每次更新Android OS时,自定义代码都需要更新以保持随着操作系统更改,使用方法#2 API保持固定,并且不必担心OS更改,问题是是否可以仅使用OpenGL/OpenMax? 问题 有上述说明,什么是通过USB镜像Android屏幕的最佳方法? 解决方案 screenrecord使用Android 5.0" Lollipop"发货可以通过ADB发送原始H.264.命令行看起来像: adb shell screenrecord --output-format=h264 - | 您可以尝试执行未压缩的框架(--output-fo
4 2024-02-18
编程技术问答社区