为Android上的OpenGL获取最大纹理尺寸的function(可以在UI线程上运行)

我已经写了下面的函数来获取Android上的最大纹理大小。 该函数应该在UI线程上运行,并且不能假定已经设置了EGLContext。 它似乎在我的测试设备上工作,但我对OpenGl和Android都相当陌生,而且我对代码没有充分的信心。 我依靠反复试验和一些复制粘贴而没有完全理解的东西。 你看到有关代码的任何问题? 特别: 这是强大的? 我是否在不知不觉中做出了错误的假设? 我是否正确清理资源? 它可以变得更简单吗? 这里是代码(在Kotlin): private fun getGLMaxTextureSize():Int { // Get display. val display = EGL14.eglGetDisplay(0) // Choose config. val configSpec = intArrayOf(EGL14.EGL_NONE) val configs = arrayOfNulls(1) var num_config = IntArray(1) EGL14.eglChooseConfig(display, configSpec, 0, configs, 0,1, num_config, 0) // Create context. val attribs = intArrayOf(EGL14.EGL_CONTEXT_CLIENT_VERSION, 2, EGL10.EGL_NONE) val context […]

在java开关expression式中使用kotlin常量

我最近一直在研究Kotlin lang,并与java进行了交互。 我有以下的Java代码: public void select(int code) { switch code { case Service.CONSTANT_ONE: break; case Service.CONSTANT_TWO: break; default: break; } } Service.kt写法如下: class Service { companion object { val CONSTANT_ONE = 1 val CONSTANT_TWO = 2 } } Java编译器说,CONSTANT_ONE和CONSTANT_TWO必须是常量,但我不知道,我怎样才能使它们比现在更加稳定。 所以我的问题是:如何使用java swicth语句中的kotlin常量? 我正在使用jdk8和kotlin M14。

为什么不outlook未来,在科特林的正则expression式工作?

例: // Java System.out.println(“one;two;th/;ree”.split(“(?<!/);").length); // 3 // Kotlin println("one;two;th/;ree".split("(?<!/);").size) // 1 如何纠正这个?

处理Ferma ORM / OGM和远程连接

我正在使用AWS上的图形数据库。 目前,我可以使用Gremlin-Driver来编写和读取顶点和边,也可以使用Kotlin(或Java)和gremlin语言来查询图,但是我想使用ORM / OGM来映射数据库的内容进入模型。 Ferma项目完全符合我的要求,但文档中的所有示例均涉及内存中的数据库。 我如何设置远程连接的配置(主机,端口,凭证等)?

安卓Braintree,贝宝不工作

收到此错误 Rejecting re-init on previously-failed class java.lang.Class: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks; 我使用Kotlin顺便说一句,如果这是有用的信息。 重复步骤 调用这个方法 有趣的onBraintreeSubmit(){val dropInRequest = DropInRequest()。clientToken(clientToken)startActivityForResult(dropInRequest.getIntent(this),REQUEST_CODE_PAY)} 选择贝宝 点击继续沙盒购买 我按照这里的设置链接 在我的应用程序级别build.gradle compile ‘com.braintreepayments.api:braintree:2.9.0’ compile ‘com.braintreepayments.api:drop-in:3.+’ 在主要活动 在创造我做 braintreeFragment = BraintreeFragment.newInstance(this@MainActivity, clientToken) braintreeFragment.addListener(this@MainActivity) 我还有一个初始化DropIn val的click监听器dropInRequest = DropInRequest().clientToken(clientToken)startActivityForResult(dropInRequest.getIntent(this),REQUEST_CODE_PAY) clientToken是来自文档的示例标记 eyJ2ZXJzaW9uIj…ib2ZmIn0= 我也看到了问题#109,所以我试着做一个编译’com.google.android.gms:play-services:8.4.0’但似乎打破了我的项目。 只是想了解是什么导致了错误 谢谢

java.lang.NoClassDefFoundError:kotlin / jvm / internal / intrinsics in libgdx

在我的libgdx gradle应用程序中,我有一个GroundHandler类: package com.mygdx.physics import com.badlogic.gdx.ApplicationAdapter import com.badlogic.gdx.Gdx import com.badlogic.gdx.math.Vector2 import com.badlogic.gdx.physics.box2d.Fixture import com.badlogic.gdx.physics.box2d.Body import com.badlogic.gdx.physics.box2d.BodyDef import com.badlogic.gdx.graphics.OrthographicCamera import com.badlogic.gdx.physics.box2d.PolygonShape import com.badlogic.gdx.physics.box2d.World class GroundHandler(val world: World, val camera: OrthographicCamera) { private var groundBodyDef: BodyDef = BodyDef() private var groundBox: PolygonShape = PolygonShape() private var groundBody: Body? = null fun createGround() { groundBodyDef.position.set(Vector2(0f, 10f)) groundBody = […]

Kotlin以声明作为expression

我们可以做的 val obj = Obj() with (obj) { objMethod1() objMethod2() } 但有没有办法做到这一点? val obj = with(Obj()) { objMethod1() objMethod2() } 为了解决一个常见的情况,你创建一个对象并调用它的一些方法来初始化它的状态。

来自java的kotlin函数默认参数

给予以下Kotlin类: class Foo { public fun bar(i: Int = 0): Int = 2 * i } 我应该如何调用没有任何参数从一个Java / Groovy代码的“酒吧”function? def f = new Foo() f.bar() //throws: java.lang.IllegalArgumentException: Parameter specified as non-null contains null

如何在Kotlin中指定duck typing(隐式接口)generics?

例如 // Not valid Kotlin code. fun myFunction … T : Summable表示任何typesT支持+操作符,即定义了一个.plus方法。

键入function建立者的推理

我正在使用Kotlin KBuilders和一些protobuffs,并且遇到了令我困惑的情况。 首先,我有一个函数,它需要一个文件名和序列化的JSON列表,并将这个JSON反序列化为一个protobuff。 fun parseFileData(fileName: String, lines: List): Data.Builder.() -> Unit = when (fileName) { SOME_FILE_NAME -> deserializeLinesToModel(lines, DataModel::class.java) .let { return { dataMeasurement = buildDataMeasurement { property1 = it.reduce { acc, n -> acc + n } measurementMsec = it.map { it.measurementMsec } } } } else -> throw UnsupportedOperationException() 我不明白的第一件事就是为什么我需要在let块内的回报。 但它的工作,所以我继续前进。 后来我决定重构一些东西,使其他地方的代码变得更简单,最后得到了这样的结果: fun […]