Форум программистов, компьютерный форум CyberForum.ru

NDK некорректно загружаются данные в шейдер - Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Android Убрать Action bar http://www.cyberforum.ru/android-dev/thread1372023.html
Подскажите пожалуйста как убрать Action bar . Никак не получается все перепробовал вот мой манифест <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.zastavka" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="19"
Android Специалисты! Как лучше привязать сервис к активити? Есть активити с контрольчиками в виде датчиков (температура, давление и т.п.), есть сервис, сервис работает с железякой. Передает в нее команды и получает ответы, работает это все достаточно медленно. Я в андроиде не спец, поэтому прошу совета, можно ли применять биндинг сервиса к активити для синхронного вызова типа "запрос-ответ-обновление UI" (в режиме пулинга) не будет ли тормозить UI? или... http://www.cyberforum.ru/android-dev/thread1372013.html
Android Подскажите структуру сервера для программы чата
Я только начал писать программы под андроид и это первая программа. Программа - чат типа IRC. Есть сервер который подключает каждого нового пользователя командой threads = new clientThread(clientSocket, threads)).start(); clientThread /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates
Opengl es: свет в сцене Android
Всем привет!! у меня на сцене есть источник света, но он светит не на всю сцену, а как сделать так чтобы, вся сцена была освещена ( вот допустим слабым светом, но чтобы на всю сцену вот тут такое освещение называется Окружающее(фоновое) освещение Но я не понимаю как его сделать.....нужно чтоли шейдер какой то написать с константными значениями для света ? или как ? подскажите пожалуйста!!! Всем...
Android Создать программу для того чтоб решать тесты http://www.cyberforum.ru/android-dev/thread1371631.html
Здравствуйте, я новичек в программировании. Хочу создать про грамму под Android, чтоб решать тесты, а сами вопросы и ответы подгружать из файла. Как это можно реальзовать. Пишу в Eclipse. Заранее спасибо.
Android PopUp-ы, которые тянутся по высоте сами Есть пример How to create popups in Android использую, нравится. Но как можно сделать PopUp ы которые сами масштабируются хотя бы по высоте. В существующем коде Ширина и Высота задаются принудительно: int popupWidth = 200; int popupHeight = 150; подробнее

Показать сообщение отдельно
contedevel
 Аватар для contedevel
57 / 55 / 8
Регистрация: 07.10.2012
Сообщений: 589
10.02.2015, 17:20     NDK некорректно загружаются данные в шейдер
Здравствуйте!
Имеется java-функция, которая прекрасно работает
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void tileRender(EasyTexture texture, int programHandler) {
        int textureStartHandler = GLES20.glGetUniformLocation(programHandler, "uv0");
        GLES20.glUniform2fv(textureStartHandler, 1,
                new float[] {texture.getLeftBound(), texture.getTopBound()}, 0);
 
        int textureEndHandler = GLES20.glGetUniformLocation(programHandler, "uv1");
        GLES20.glUniform2fv(textureEndHandler, 1,
                new float[] {texture.getRightBound(), texture.getBottomBound()}, 0);
 
        int tileCountHandler = GLES20.glGetUniformLocation(programHandler, "vTileCount");
        if(tileCountHandler != -1)
            GLES20.glUniform2fv(tileCountHandler, 1,
                    new float[]{texture.getScaleX(), texture.getScaleY()}, 0);
    }


Мне нужен ее C++ аналог, написал так
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
JNIEXPORT void JNICALL Java_com_contedevel_lastlegend_core_render_EasyRenderer_tileRender
  (JNIEnv *, jclass, jfloat left, jfloat top, jfloat right, jfloat bottom, jfloat scaleX, jfloat scaleY, jint hProgram) {
    int hTextureStart = glGetUniformLocation(hProgram, "uv0");
    float uv0[2] = {(float)left, (float)right};
    glUniform2fv(hTextureStart, 1, (GLfloat *)uv0);
 
    float uv1[2] = {(float)right, (float)bottom};
    int hTextureEnd = glGetUniformLocation(hProgram, "uv1");
    glUniform2fv(hTextureEnd, 1, (GLfloat *)uv1);
 
    int hTileCount = glGetUniformLocation(hProgram, "vTileCount");
    
    if(hTileCount == -1)
        return;
 
    float tileCount[2] = {(float)scaleX, (float)scaleY};
    glUniform2fv(hTileCount, 1, (GLfloat *)tileCount);
}


Шейдер такой
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
precision mediump float;
 
uniform sampler2D sTexture;
uniform vec2 uv0;
uniform vec2 uv1;
uniform vec2 vTileCount;
 
varying vec2 vTextureCoordinates;
 
void main( void ) {
     vec2 delta = uv1 - uv0;
     vec2 uv = delta * vTextureCoordinates * vTileCount;
     vec2 tile = mod(floor(uv / delta), vec2(2, 2));
 
     uv = mod(uv, delta);
     vec2 uvInverse = delta - uv;
     uv = mix(uv, uvInverse, ceil(tile / vec2(2, 2))) + uv0;
 
     gl_FragColor = texture2D(sTexture, uv);
}


Что не так с C++ функцией? Такое чувство, что glUniform2fv берёт только первое значение из массива...

Добавлено через 11 минут
P.S. Из java в C++-функцию данные передаются корректно, проверял, т.е. проблема именно в передаче данных в OpenGL
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru