小编man*_*eak的帖子

如何处理COLLADA指数?

我为COLLADA文件格式编写了一个简单的阅读器,它似乎工作正常.现在,我有一个Blender导出的立方体网格边缘分割和三角形,所以它应该有12个三角形(每个面2个),24个顶点(每个面4个)和36个索引(每个面6个).此网格还具有普通数据和UV贴图.

COLLADA文件有24个顶点,12个法线和36个UV,所以我假设法线是每个三角形,UV是每个索引.polylist三角形的数量是12,这是正确的,并且vcount有12个'3',所以这也是正确的.现在,<p>哪个是索引列表有108个条目,其中0,3,6等是顶点索引,1,4,7等是正常索引,而2,5,8等是UV索引.

我有一个顶点的内部结构,它由position(vec3),normal(vec3)和UV坐标(vec2)组成.要绘制网格,我使用OpenGL的顶点缓冲区,并有一个单独的索引列表.

问题是,加载网格后我不应该有24个顶点吗?108个条目<p>转换为36个顶点.这里的指数有什么问题?

我可能会遗漏一些非常简单的东西,但不能只看到它.

COLLADA文件在这里.

3d mesh collada indices

5
推荐指数
1
解决办法
2796
查看次数

KitKat还需要WRITE_EXTERNAL_STORAGE吗?

文档中所述,从API级别19开始,不应该要求WRITE_EXTERNAL_STORAGE权限。因此,我已将其写到清单中:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                 android:maxSdkVersion="18"/>
Run Code Online (Sandbox Code Playgroud)

但是,在运行使用Google Maps V2并因此需要访问外部存储的应用程序时,我得到了SecurityException

java.lang.SecurityException: The Maps API requires the additional following permissions to be set in the AndroidManifest.xml to ensure a correct behavior:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
Run Code Online (Sandbox Code Playgroud)

我正在运行该应用程序的手机是API级别19的KitKat(4.4)。据我所知,未经许可,该应用程序应该能够正常运行。为什么我仍然会收到错误?

android android-permissions

5
推荐指数
1
解决办法
2257
查看次数

如何检查当前区域设置是否在Android中使用24小时制?

我的应用程序中有一个时间选择器对话框.这很好用,但我想根据当前的语言环境在12小时和24小时选择器对话框之间切换.如何找出使用的时钟?

对话框本身就像这样启动:

boolean use24HourClock = true; // This i'd like to get from the locale
new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener()
{
    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute)
    {

    }
}, 12, 00, use24HourClock).show();
Run Code Online (Sandbox Code Playgroud)

android

5
推荐指数
1
解决办法
1412
查看次数

是否可以使用Gson展平JSON层次结构?

我使用Gson将JSON数据转换为Java对象。但是,JSON结构有一个额外的字段,可以将其展平。这可能与格森有关吗?

详细说明(因为这很难解释),JSON看起来像这样:

{
    "foo": "bar",
    "data": {
        "first": 0,
        "second": 1,
        "third": 2
    }
}
Run Code Online (Sandbox Code Playgroud)

这将产生两个类,一个用于父类,一个用于data,如下所示:

public class Entry {
    private String foo;
    private Data data;
}

public class Data {
    private int first;
    private int second;
    private int third;
}
Run Code Online (Sandbox Code Playgroud)

我想将data字段“展平” 到父对象中,以便Java类如下所示:

public class Entry {
    private String foo; 
    private int first;
    private int second;
    private int third;
}
Run Code Online (Sandbox Code Playgroud)

使用例如TypeAdapters的Gson是否可以实现?

java json gson

5
推荐指数
1
解决办法
1722
查看次数

RxJava:同时发送多个请求时如何刷新令牌?

我有一个应用程序,它使用 OAuth2 进行身份验证并使用 Retrofit 从 RESTful 服务中获取数据。现在,我有令牌检索并刷新并运行。令牌像这样刷新(省略了调度程序):

// Each Retrofit call observable is "wrapper" using this method
protected <T> Observable<T> wrap(@NonNull final Observable<T> page) {
    return authenticate()
        .concatMap(token -> page)
        .onErrorResumeNext(throwable -> {
            Log.w(TAG, "wrap: ErrorResumeNext", throwable);
            return refreshAccessToken()
                .flatMap(accessToken -> page);
        }));
}

// Retrieves the access token if necessary
Observable<AccessToken> authenticate() {
    // Already have token
    if(accessToken != null) return Observable.just(accessToken);
    // No token yet, fetch it
    return api.getAccessToken(...);
}

// Refreshes the token
Observable<AccessToken> refreshAccessToken() {
    return …
Run Code Online (Sandbox Code Playgroud)

android oauth-2.0 rx-java retrofit2 refresh-token

5
推荐指数
1
解决办法
1123
查看次数

获取位置而不是整数中最高一位的值

如何获得整数中最高一位的位置而不是值?我知道我可以得到这样的价值:

// Prints 8; in 1101, the highest bit is the one denoting 8
int f = 13;
System.out.println("Highest: " + Integer.highestOneBit(f));
Run Code Online (Sandbox Code Playgroud)

不过,我想获得位置最高的一位-在这种情况下,这将是4(因为1000在二进制== 8,最高的一位是第四个)。

java

5
推荐指数
1
解决办法
623
查看次数

Android Studio不会在“运行”上构建Java项目;需要手动构建

我有一个多模块Java项目,该项目在Android Studio中打开。现在,该项目可以正常运行,但是当我单击“运行”时,它将无法构建该项目。而是运行旧的可执行文件。我始终必须首先手动构建项目,以便它可以运行最新版本。

是什么原因造成的?我的启动配置似乎是正确的(带有正确的主类和模块的“应用程序”配置)。在我的模块的build.gradle中,我有以下内容:

apply plugin: "application"
apply plugin: "idea"

mainClassName = "me.manabreak.manray.EditorLauncher"
sourceCompatibility = 1.8
Run Code Online (Sandbox Code Playgroud)

根据此Gradle文档,这应该是正确的。我不确定为什么在运行之前无法构建Android Studio / IDEA。

java gradle android-studio

5
推荐指数
1
解决办法
429
查看次数

如何在没有gluUnProject的情况下在现代OpenGL中进行挑选?

如何在不使用gluUnProject的情况下将屏幕坐标转换为现代OpenGL中的世界坐标?

opengl mouse-picking opentk

4
推荐指数
1
解决办法
3686
查看次数

从 XML 资源文件中获取所有字符串资源?

我有一个名为的资源文件suggestions.xml,它被翻译成几种语言。这些 XML 文件只包含<string>值。

现在,我想检索当前语言环境suggestions.xml文件中的所有字符串。我怎么做?我知道我可以通过它们的 ID 检索单个字符串,但我想获取XML 文件中的所有字符串。

xml android android-resources

4
推荐指数
1
解决办法
2102
查看次数

如何使用回调测试功能?

假设我们有一个用于回调函数的接口,例如:

public interface Callback
{
    void foo();
}
Run Code Online (Sandbox Code Playgroud)

我们有一个方法可以调用作为参数给出的回调:

public void doSomething(final Callback callback)
{
    // Do something, like asynchronously fetch something from a server
    asyncStuff.doSomethingAsync(new AsyncResponseHandler()
    {
        @Override
        public void asyncStuffDone()
        {
            // Call the callback
            callback.foo();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

现在,问题来了:在这种情况下,如何测试回调确实被调用?

java junit

4
推荐指数
1
解决办法
1373
查看次数