Limits of shader OpenGL ES 2 (SGX 540)?

Hello BB NDK dev forums,.

We bring a relatively large iOS app to Blackberry and have some relatively serious differences in the behavior of shader records on the Playbook. These same differences were also observed on some Android devices also running the SGX 540 chipset. He knows any problems or workaround solutions that surround this particular chipset? I would be happy to display example shader code if necessary.

Thank you!

Scott Jacoby

Hi Horizon XP,

Understand our question just as your answer came.

The main question that we have observed was out invalid vertex shader in some cases. This seems to be due to the fact that when multiplying the attributes of vertex of lower precision with uniform or temporary precision variables higher, the results appear to be truncated to less precision.

For example:

lowp vec3 pos attribute.

highp uniform vec4 xform [4];

Sub main()

{

mediump xformedPos = pos.x * xform [0] + pos.y * xform [1] + pos.z * xform [2];

This can produce invalid results.

}

The solution was to increase the accuracy of the entries attribute, even though it does not require the vertex data.

Hope that helps someone else

Tags: BlackBerry Developers

Similar Questions

  • OpenGL 2.0 and Shader Model 3.0

    After the purchase of Photoshop CS6 Extended because she's amazing 3D options, I realized my video card sucked because it's a CSU and not a GPU as required.

    Then I looked at what the requirements are to enable the GPU options and he said deserves an OpenGL 2.0 and Shader Model 3.0.

    I was looking for a video card that corresponds exactly to that without result (I live in a country the size of a peanut that doesn't sell a 2.0 and 3.0).

    But I found templates 5.0 shaders and OpenGL 4.1 and I wanted to know if it is acceptable also.

    OpenGL 2.0 and Shader Model 3.0 minimum requirements and if I can go higher?

    Or Photoshop Extended will not allow this GPU option if I go above Shader Model 3.0 and OpenGL 2.0 requested?

    [Personal information deleted]

    Thank you very much!!!

    Post edited by: sinious

    These are minimium requirements.  Also recommend a minimum of 1 GB of VRAM if 3D.

    Here is a site that class video cards.  A rank of 1000 is all excellent and about what's necessary.  http://www.videocardbenchmark.NET/

  • BPS dialogues seem to stop working after the initialization of the OpenGL

    In the following example (the main.c to GLES20Template), if the call to show_alert (taken from the example of the dialog box) is performed before the call to bbutil_init_egl, we see a dialog box.  Otherwise, we do not see a dialog box (or an error message explaining what we did wrong).  That passed?

    OpenGL is not compatible with BPS?

    Anyone know how to get the dialogs BPS works in an application that uses OpenGL?

    /*
     * Copyright (c) 2011-2012 Research In Motion Limited.
     *
     * 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
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    #include 
    #include 
    
    #include 
    
    #include "bbutil.h"
    
    #include "pthread.h"
    #include 
    
    dialog_instance_t alert_dialog;
    
    static GLfloat vertices[8];
    static GLfloat colors[16];
    
    static GLuint program;
    
    static GLuint transformLoc;
    static GLuint positionLoc;
    static GLuint colorLoc;
    
    static GLfloat matrix[16] = {1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1};
    
    static GLuint vertexID;
    static GLuint colorID;
    
    static screen_context_t screen_cxt;
    
    EGLContext derived_ctx;
    
    void handleScreenEvent(bps_event_t *event) {
        screen_event_t screen_event = screen_event_get_event(event);
    
        int screen_val;
        screen_get_event_property_iv(screen_event, SCREEN_PROPERTY_TYPE, &screen_val);
    
        switch (screen_val) {
        case SCREEN_EVENT_MTOUCH_TOUCH:
        case SCREEN_EVENT_MTOUCH_MOVE:
        case SCREEN_EVENT_MTOUCH_RELEASE:
            break;
        }
    }
    
    int initialize() {
        //Initialize vertex and color data
        vertices[0] = -0.25f;
        vertices[1] = -0.25f;
    
        vertices[2] = 0.25f;
        vertices[3] = -0.25f;
    
        vertices[4] = -0.25f;
        vertices[5] = 0.25f;
    
        vertices[6] = 0.25f;
        vertices[7] = 0.25f;
    
        colors[0] = 1.0f;
        colors[1] = 0.0f;
        colors[2] = 1.0f;
        colors[3] = 1.0f;
    
        colors[4] = 1.0f;
        colors[5] = 1.0f;
        colors[6] = 0.0f;
        colors[7] = 1.0f;
    
        colors[8] = 0.0f;
        colors[9] = 1.0f;
        colors[10] = 1.0f;
        colors[11] = 1.0f;
    
        colors[12] = 0.0f;
        colors[13] = 1.0f;
        colors[14] = 1.0f;
        colors[15] = 1.0f;
    
        //Query width and height of the window surface created by utility code
        EGLint surface_width, surface_height;
    
        eglQuerySurface(egl_disp, egl_surf, EGL_WIDTH, &surface_width);
        eglQuerySurface(egl_disp, egl_surf, EGL_HEIGHT, &surface_height);
    
        // Create shaders
        const char* vSource =
                "precision mediump float;"
                "uniform mat4 u_projection;"
                "uniform mat4 u_transform;"
                "attribute vec4 a_position;"
                "attribute vec4 a_color;"
                "varying vec4 v_color;"
                "void main()"
                "{"
                "    gl_Position = u_projection * u_transform * a_position;"
                "    v_color = a_color;"
                "}";
    
        const char* fSource =
                "varying lowp vec4 v_color;"
                "void main()"
                "{"
                "    gl_FragColor = v_color;"
                "}";
    
        GLint status;
    
        // Compile the vertex shader
        GLuint vs = glCreateShader(GL_VERTEX_SHADER);
        if (!vs) {
            fprintf(stderr, "Failed to create vertex shader: %d\n", glGetError());
            return EXIT_FAILURE;
        } else {
            glShaderSource(vs, 1, &vSource, 0);
            glCompileShader(vs);
            glGetShaderiv(vs, GL_COMPILE_STATUS, &status);
            if (GL_FALSE == status) {
                GLchar log[256];
                glGetShaderInfoLog(vs, 256, NULL, log);
    
                fprintf(stderr, "Failed to compile vertex shader: %s\n", log);
    
                glDeleteShader(vs);
            }
        }
    
        // Compile the fragment shader
        GLuint fs = glCreateShader(GL_FRAGMENT_SHADER);
        if (!fs) {
            fprintf(stderr, "Failed to create fragment shader: %d\n", glGetError());
            return EXIT_FAILURE;
        } else {
            glShaderSource(fs, 1, &fSource, 0);
            glCompileShader(fs);
            glGetShaderiv(fs, GL_COMPILE_STATUS, &status);
            if (GL_FALSE == status) {
                GLchar log[256];
                glGetShaderInfoLog(fs, 256, NULL, log);
    
                fprintf(stderr, "Failed to compile fragment shader: %s\n", log);
    
                glDeleteShader(vs);
                glDeleteShader(fs);
    
                return EXIT_FAILURE;
            }
        }
    
        // Create and link the program
        program = glCreateProgram();
        if (program)
        {
            glAttachShader(program, vs);
            glAttachShader(program, fs);
            glLinkProgram(program);
    
            glGetProgramiv(program, GL_LINK_STATUS, &status);
            if (status == GL_FALSE)    {
                GLchar log[256];
                glGetProgramInfoLog(fs, 256, NULL, log);
    
                fprintf(stderr, "Failed to link shader program: %s\n", log);
    
                glDeleteProgram(program);
                program = 0;
    
                return EXIT_FAILURE;
            }
        } else {
            fprintf(stderr, "Failed to create a shader program\n");
    
            glDeleteShader(vs);
            glDeleteShader(fs);
            return EXIT_FAILURE;
        }
    
        glUseProgram(program);
    
        // Set up the orthographic projection - equivalent to glOrtho in GLES1
        GLuint projectionLoc = glGetUniformLocation(program, "u_projection");
        {
            GLfloat left = 0.0f;
            GLfloat right = (float)(surface_width) / (float)(surface_height);
            GLfloat bottom = 0.0f;
            GLfloat top = 1.0f;
            GLfloat zNear = -1.0f;
            GLfloat zFar = 1.0f;
            GLfloat ortho[16] = {2.0 / (right-left), 0, 0, 0,
                                0, 2.0 / (top-bottom), 0, 0,
                                0, 0, -2.0 / (zFar - zNear), 0,
                                -(right+left)/(right-left), -(top+bottom)/(top-bottom), -(zFar+zNear)/(zFar-zNear), 1};
            glUniformMatrix4fv(projectionLoc, 1, false, ortho);
        }
    
        // Store the locations of the shader variables we need later
        transformLoc = glGetUniformLocation(program, "u_transform");
        positionLoc = glGetAttribLocation(program, "a_position");
        colorLoc = glGetAttribLocation(program, "a_color");
    
        // We don't need the shaders anymore - the program is enough
        glDeleteShader(fs);
        glDeleteShader(vs);
    
        // Generate vertex and color buffers and fill with data
        glGenBuffers(1, &vertexID);
        glBindBuffer(GL_ARRAY_BUFFER, vertexID);
        glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW);
    
        glGenBuffers(1, &colorID);
        glBindBuffer(GL_ARRAY_BUFFER, colorID);
        glBufferData(GL_ARRAY_BUFFER, sizeof(colors), colors, GL_STATIC_DRAW);
    
        // Perform the same translation as the GLES1 version
        matrix[12] = (float)(surface_width) / (float)(surface_height) / 2;
        matrix[13] = 0.5;
        glUniformMatrix4fv(transformLoc, 1, false, matrix);
    
        //////////////////////////////////////////////////////////////
        // Test code to stimulate multi-threading bug:
    
        EGLint contextAttribs[] = { EGL_CONTEXT_CLIENT_VERSION, 2, EGL_NONE, EGL_NONE };
    
        // Create a shared context:
        derived_ctx = eglCreateContext(egl_disp, egl_conf, egl_ctx, contextAttribs);
    
        return EXIT_SUCCESS;
    }
    
    /*void* aThread(void *not_used) {
    
        EGLint numConfigs;
        EGLConfig auxConfig;
        EGLSurface auxSurface;
    
        const EGLint auxConfigAttribs[] =
            {
                EGL_SURFACE_TYPE, EGL_PBUFFER_BIT,
                EGL_BLUE_SIZE, 8,
                EGL_GREEN_SIZE, 8,
                EGL_RED_SIZE, 8,
                EGL_ALPHA_SIZE, 0,
                EGL_DEPTH_SIZE, 0,
                EGL_STENCIL_SIZE, 0,
                EGL_NONE
            };
    
        EGLint pbufferAttribs[] =
            {
                EGL_WIDTH, 1,
                EGL_HEIGHT, 1,
                EGL_TEXTURE_TARGET, EGL_NO_TEXTURE,
                EGL_TEXTURE_FORMAT, EGL_NO_TEXTURE,
                EGL_NONE
            };
    
        eglChooseConfig(egl_disp, auxConfigAttribs, &auxConfig, 1, &numConfigs);
        auxSurface = eglCreatePbufferSurface(egl_disp, auxConfig, pbufferAttribs);
    
        EGLBoolean  result = eglMakeCurrent(egl_disp, auxSurface, auxSurface, derived_ctx);
        if (result == EGL_FALSE){
            fprintf(stderr, "UNABLE TO MAKE CONTEXT CURRENT\n");
            //int err = glGetError();
            bbutil_terminate();
        } else {
            fprintf(stderr, "made shared context current!\n");
        }
        return NULL;
    }*/
    
    void render() {
        // Increment the angle by 0.5 degrees
        static float angle = 0.0f;
        angle += 0.5f * M_PI / 180.0f;
    
        //Typical render pass
        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
        // Enable and bind the vertex information
        glEnableVertexAttribArray(positionLoc);
        glBindBuffer(GL_ARRAY_BUFFER, vertexID);
        glVertexAttribPointer(positionLoc, 2, GL_FLOAT, GL_FALSE, 2 * sizeof(GLfloat), 0);
    
        // Enable and bind the color information
        glEnableVertexAttribArray(colorLoc);
        glBindBuffer(GL_ARRAY_BUFFER, colorID);
        glVertexAttribPointer(colorLoc, 4, GL_FLOAT, GL_FALSE, 4 * sizeof(GLfloat), 0);
    
        // Effectively apply a rotation of angle about the y-axis.
        matrix[0] = cos(angle);
        matrix[2] = -sin(angle);
        matrix[8] = sin(angle);
        matrix[10] = cos(angle);
        glUniformMatrix4fv(transformLoc, 1, false, matrix);
    
        // Same draw call as in GLES1.
        glDrawArrays(GL_TRIANGLE_STRIP, 0 , 4);
    
        // Disable attribute arrays
        glDisableVertexAttribArray(positionLoc);
        glDisableVertexAttribArray(colorLoc);
    
        bbutil_swap();
    }
    /**
     * Show an alert dialog that has two buttons: a "Cancel" button, and a "Submit" button.
     */
    static void
    show_alert()
    {
        if (alert_dialog) {
            return;
        }
    
        if (dialog_create_alert(&alert_dialog) != BPS_SUCCESS) {
            fprintf(stderr, "Failed to create alert dialog.");
            return;
        }
    
        if (dialog_set_alert_message_text(alert_dialog, "Hello World!") != BPS_SUCCESS) {
            fprintf(stderr, "Failed to set alert dialog message text.");
            dialog_destroy(alert_dialog);
            alert_dialog = 0;
            return;
        }
    
        /*
         * Create a context to attach to the cancel button
         */
        char* cancel_button_context = "Cancelled";
    
        /*
         * Use a button label defined in bps/dialog.h. Attach a context to the button.
         */
        if (dialog_add_button(alert_dialog, DIALOG_CANCEL_LABEL, true, cancel_button_context, true) != BPS_SUCCESS) {
            fprintf(stderr, "Failed to add button to alert dialog.");
            dialog_destroy(alert_dialog);
            alert_dialog = 0;
            return;
        }
    
        /*
         * Use a button label of our own. Don't attach a context to the button.
         */
        if (dialog_add_button(alert_dialog, "Submit", true, 0, true) != BPS_SUCCESS) {
            fprintf(stderr, "Failed to add button to alert dialog.");
            dialog_destroy(alert_dialog);
            alert_dialog = 0;
            return;
        }
    
        if (dialog_show(alert_dialog) != BPS_SUCCESS) {
            fprintf(stderr, "Failed to show alert dialog.");
            dialog_destroy(alert_dialog);
            alert_dialog = 0;
            return;
        }
    }
    
    int main(int argc, char *argv[]) {
        int rc;
        int exit_application = 0;
    
        //glGetError();
        //Initialize BPS library
        bps_initialize();
    
        //Create a screen context that will be used to create an EGL surface to to receive libscreen events
        screen_create_context(&screen_cxt, 0);
    
        //Signal BPS library that navigator and screen events will be requested
        if (BPS_SUCCESS != screen_request_events(screen_cxt)) {
            fprintf(stderr, "screen_request_events failed\n");
            bbutil_terminate();
            screen_destroy_context(screen_cxt);
            bps_shutdown();
            return 0;
        }
    
        if (BPS_SUCCESS != navigator_request_events(0)) {
            fprintf(stderr, "navigator_request_events failed\n");
            bbutil_terminate();
            screen_destroy_context(screen_cxt);
            bps_shutdown();
            return 0;
        }
    
        //Signal BPS library that navigator orientation is not to be locked
        if (BPS_SUCCESS != navigator_rotation_lock(false)) {
            fprintf(stderr, "navigator_rotation_lock failed\n");
            bbutil_terminate();
            screen_destroy_context(screen_cxt);
            bps_shutdown();
            return 0;
        }
    
        //Use utility code to initialize EGL for rendering with GL ES 2.0
        if (EXIT_SUCCESS != bbutil_init_egl(screen_cxt)) {
            fprintf(stderr, "bbutil_init_egl failed\n");
            bbutil_terminate();
            screen_destroy_context(screen_cxt);
            return 0;
        }
    
        //Initialize application logic
        if (EXIT_SUCCESS != initialize()) {
            fprintf(stderr, "initialize failed\n");
            bbutil_terminate();
            screen_destroy_context(screen_cxt);
            bps_shutdown();
            return 0;
        }
    
        dialog_request_events(0);
    
        /*
         * start the application with a dialog.
         */
        show_alert();
    
        // start a thread:
        //pthread_t  _t, _t2;
        //pthread_create(&_t, NULL, aThread, NULL);
        //pthread_create(&_t2, NULL, aThread, NULL);
    
        while (!exit_application) {
            //Request and process all available BPS events
            bps_event_t *event = NULL;
    
            for(;;) {
                rc = bps_get_event(&event, 0);
                assert(rc == BPS_SUCCESS);
    
                if (event) {
                    int domain = bps_event_get_domain(event);
    
                    if (domain == screen_get_domain()) {
                        handleScreenEvent(event);
                    } else if ((domain == navigator_get_domain())
                            && (NAVIGATOR_EXIT == bps_event_get_code(event))) {
                        exit_application = 1;
                    }
                } else {
                    break;
                }
            }
            render();
        }
    
        //Stop requesting events from libscreen
        screen_stop_events(screen_cxt);
    
        //Shut down BPS library for this process
        bps_shutdown();
    
        //Use utility code to terminate EGL setup
        bbutil_terminate();
    
        //Destroy libscreen context
        screen_destroy_context(screen_cxt);
        return 0;
    }
    

    Try this: Edit bbutil.c to create a group of windows with screen_create_window_group() immediately after creating the window with screen_create_window().

  • 970 GTX unsupported? After effects error: drawn in the 3D Department: Initial shader compilation failed (5070: 2)

    I am disappointed that my MSI GTX 970 is not supported for 3D ray-traced in Adobe after effects CC 2014.
    My configuration:
    Intel Core i7 4790 k 4.4 GHz
    8 GB DDR3 1333 MHz RAM (fix 16 GB soon)

    MSI GTX 970 games 4G

    Windows 8.1 Pro x 64

    Card GPU:

    Fast draft:Available
    Texture memory:1562 MB
    Ray-tracing:

    CENTRAL PROCESSING UNIT

    (Not available - GPU CUDA driver or incompatible device)

    OpenGL

    Seller:NVIDIA Corporation
    Feature:GeForce GTX PCIe/970/SSE2
    Version:2.1.2 NVIDIA 344.75
    Total memory:3.81 GB
    Shader Model:4.0 or later

    CUDA

    Driver version:-
    Features:-
    Current usable memory:-
    Maximum usable memory:-

    I don't have the option "Enable CPU untested, not taken in charge for acceleration or traced to the 3D renderer Ray CUDA" but when I have him allow, I get an error saying:
    "After effects error: drawn in the 3D Department: Initial shader compilation failed." (5070:: 2) ".

    then

    "After Effects Error: drawn in the 3D Department: unable to create the context for Raytracer (5070: 2)" "

    then another

    "After Effects Error: drawn in the 3D Department: paged memory mapped to a Raytracer." Your project may exceed the limits of the GPU. Close other applications. Try to update the CUDA driver. (5070:: 2) '


    I have the latest Nvidia driver. Anyway to fix this? Or I have to wait for Adobe support my GPU?

    I'd suggest ditching forced the C4D and ray traced rendering engine instead of use: Details of CINEMA 4 d with After Effects integration

    I mean, it's more powerful and it's free!

    If you absolutely need to use ray-traced rendering engine, what are you trying to use it on? Try it with only a layer of simple form you need to do 3d just to eliminate the problems of others, possibly complications, a project. What CC 2014 version are you running? 13.1? 13.2?

    Don't forget, Adobe is never going to add to the list supported for rendering engine raytraced as they develop is more this feature.

  • Limitation GPU Qosmio X 770-107 / Frameratebreakdown all in game

    Hello

    have been reviewed by the Nvidia-diver-Thread already but now here in an own topic: many users of this laptop you have the problem that the Framerate breaks every few minutes in actual games like Dirt3 that makes em unplayable. When they * turn off the LCD screen of laptop-clean and connect an external display to play, no more outages occur.*

    Perhaps the * power supply of the portable computer is low? * part number of my * power supply adapter is PART: PA3546E-1AC3 * which causes this problem. * May I now get a more powerful adapter Toshiba? * If not, I'll pay back... always * don't play games on my TV screen is 50 "no solution *, I bought a laptop for don't need NO external screen...

    Some newspapers of the limitation:

    09/06/2011 19:02:02 GeForce GTX 560 M: GPU temp: 47 C, GPU load: 81%, Vmem use: 44%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    09/06/2011 19:07:02 GeForce GTX 560 M: GPU temp: 62 C, GPU load: 78%, Vmem use: 42%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    09/06/2011 19:12:02 GeForce GTX 560 M: GPU temp: 65 C, GPU load: 83%, Vmem use: 42%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    09/06/2011-19:17:02 GeForce GTX 560 M: GPU temp: 65 C, GPU load: 79%, Vmem use: 41%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    09/06/2011 19:22:02 GeForce GTX 560 M: GPU temp: 66 C, GPU load: 85%, Vmem use: 47%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    * GeForce GTX 560 M 09/06/2011-19:27:02: GPU temp: 65 C, GPU load: 81%, Vmem use: 42%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz *.
    * GeForce GTX 560 M 09/06/2011-19:32:02: GPU temp: 56 C, GPU load: 6%, Vmem use: 8%, GPU:0 MHz, Shader: 0 MHz, memory: 135 MHz *.
    * GeForce GTX 560 M 09/06/2011-19:37:02: GPU temp: 48 C, GPU load: 24%, Vmem use: 3%, GPU:0 MHz, Shader: 0 MHz, memory: 324 MHz *.
    * GeForce GTX 560 M 09/06/2011-19:42:02: GPU temp: 63 C, GPU load: 98%, Vmem use: 53%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz *.
    09/06/2011-19:47:02 GeForce GTX 560 M: GPU temp: 63 C, GPU load: 91%, Vmem use: 50%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz
    09/06/2011 19:52:02 GeForce GTX 560 M: GPU temp: 63 C, GPU load: 72%, Vmem use: 40%, GPU:0 MHz, Shader: 0 MHz, memory: 1247 MHz

    happens to me even in GTA CFLS and Deus Ex
    did not try to use an external monitor - but why in the hell I bought this bloody laptop computer to also carry an external monitor? =))

  • Error of Minecraft OpenGL on Satellite L650 - 1 M 8

    Hey guys, I hope you can help me.

    So I have a Toshiba Satellite L650 - 1 M 8 Mobile and last year, I bought and downloaded Minecraft for play.
    At the opening, I get the classic error of OpenGL.
    I tried for hours searching the web for solutions to this problem that I badly want to play what I paid for.

    I contacted Mojang on this issue, they cannot help because of different systems in the world, he is present to diversify for them, so that they are limited to billing and account. I have read several discussions on this issue and do not yet have a solution.

    Recently, I saw a thread on the forums of Toshiba someone fixed it for their kids to play, but they are computer laptop was a different model to mine.

    My graphics card is Intel(r) HD Graphics, there is no option for the display driver in Device Manager. This has been updated with the latest version of the Toshiba support, as well as my version of Java later.

    Please help, thanks.

    Try the Intel display driver that you can download from the Intel page.

    Additional note: there is already a thread on this topic:
    http://forums.computers.Toshiba-Europe.com/forums/thread.jspa?threadID=70080

    So it of not necessary to open new discussions on the same theme.

  • Satellite A350-13 b - OpenGL and Radeon HD3650

    Hello

    My laptop is the Satellite A350-13 b with ATI Mobility Radeon HD3650.

    I found that I have OpenGL 1.1 (7/7) and partially 1.2 (1/8).

    I installed the latest drivers from ATI, modded with Mobility Modder site (also tried drivers from the Toshiba website - no results).

    I found that the modded drivers require OpenGL patch to make it work.

    Must be added:

    HKLM\Software\Microsoft\Windows NT\CurrentVersion\OpenGLDrivers\ati2dvag
    "Version" = "2" REG_DWORD %
    'DriverVersion' = '1' REG_DWORD %
    'Flags' = '1' REG_DWORD %
    "Dll"="atioglxx.dll" REG_SZ %

    But after he OpenGL Extensions Viewer see values (1.1 and 1.2).

    How is it possible to check the highest available version OpenGl and operate?

    I have a file called atioglxx.dll in Windows\System32 and registry entries mentioned above, but OpenGL Extensions Viewer says:

    Renderer: GDI generic
    Vendor: Microsoft Corporation
    Memory: 512 MB
    Version: 1.1.0
    Shading language version: N/A

    Texture size max: 1024 x 1024
    Max texture coordinates: 0
    Max vertex texture image capacity: 0
    Units of image texture max: 0
    Max geometry texture units: 0
    Value of filtering anisotropic max: 0
    Maximum number of light sources: 8
    Maximum window size: 16384 x 16384
    Components of top uniform max: 0
    Fragment components uniform max: 0
    Uniform components of geometry max: 0
    Max of the floats: 0
    Samples of max: 0
    Max draw buffers: 0

    Extensions: 3

    GL_EXT_bgra
    GL_EXT_paletted_texture
    GL_WIN_swap_hint

    Main features
    v1.1 (100% - 7/7)
    v1.2 (12% - 1/8)
    v1.3 (0% - 0/9)
    v1.4 (0% - 0/15)
    v1.5 (0% - 0/3)
    v2.0 (0% - 0/10)
    v2.1 (0% - 0/3)
    v3.0 (0% - 0/23)
    v3.1 (0% - 0/8)
    v3.2 (0% - 0/9)
    v3.3 (0% - 0/9)
    v4.0 (0% - 0/13)
    v4.1 (0% - 0/8)

    For the OpenGL driver version check (current: later known 1.1.0: 1.1.0):
    Latest version of found display drivers
    According to the database, you use the latest display drivers for your video card.

    No ICD registry entry
    The OpenGL driver does not expose the SOFTWARE/Microsoft/Windows (NT) / CurrentVersion/OpenGLDrivers registry entry. Could not detect the version of the driver, the revision of the driver name and the name.

    No support of the compiled vertex array
    This can lead to loss of performance in certain applications.

    No support of the singlepass
    This can lead to loss of performance in certain applications.

    No support for the secondary color
    Some applications can make not made salient polygon correctly.

    No support for S3TC compression
    This can lead to loss of performance in certain applications.

    No support from flange edge texture
    This feature adds control for edge clamping texel filtering. Some programs may not properly making the textures (black line border).

    No support for vertex program
    This function allows programming of vertex (equivalent to DX8 Vertex Shader). Some current or future OpenGL programs may require this functionality.

    No support fragment program
    This feature allows programmatically pixels (equivalent to DX9 Pixel Shader). Some current or future OpenGL programs may require this functionality.

    No OpenGL Shading Language support
    This can break compatibility for applications using by pixel shading.

    No support Frame buffer objects
    This can break compatibility for applications that use the rendering to texture functions.

    Some found texture units
    This can slow down some applications using fragment programs or extended texture mapping.

    Check the extension:
    GL_EXT_color_subtable could not be found, but has the entry point glColorSubTableEXT

    Thanks in advance for the help.

    PS: I'm from Poland, so keep in mind ;)

    Hello

    Nice ad, but what's the problem now? You publish many technical information that they are not useful, but what is your problem?

  • QT and OpenGL not made

    I have implemented the example in the SDK of 4.8 Qt under opengl/cube.

    http://Qt.Gitorious.org/Qt/Qt/trees/4.8/examples/OpenGL/cube

    I have modified so that it works on the PlayBook (that is, do not use QWindow).

    It runs great on Ubuntu in Qt Creator. Cross-compile for the PlayBook just fine and I can load it on the unit and run it, but it is not working properly.

    Namely, it simply display a blank screen of white that becomes black when I press on it. You will notice that there are a few qDebug()< calls="" in="" the="" initializegl()="" function="" call.="" i="" added="" some="" qmessagebox="" calls="" instead="" to="" see="" if="" these="" were="" being="" reached,="" and="" it="" seems="" they="" are.="" no="" idea="" if="" the="" other="" functions="" are="" being="" completed="" correctly,="" still="" looking="" into="">

    Anyone have any ideas of what I'm missing here? Is there a way to actually debug the program, so I can find the questions myself?

    It turns out that it was a problem with the repetition of the texture of OpenGL ES 2.0. Namely:

    // Wrap texture coordinates by repeating
        // f.ex. texture coordinate (1.1, 1.2) is same as (0.1, 0.2)
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
    

    Is not allowed. GL_REPEAT cannot be used with textures NPOT (power of two) in OpenGL ES 2.0. Instead, you must attach to the edge, or to implement in your fragment shader.

    // Wrap texture coordinates by repeating
        // f.ex. texture coordinate (1.1, 1.2) is same as (0.1, 0.2)
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
    

    Works fine now, EXCEPT that, when the application starts, it starts with a blank space where the OpenGL is rendered. Once the user clicks on it, it draws perfectly. No idea why this is the case.

  • openGL 2.0 with jpeg textures

    Hi devs,

    I have a problem texturing a plane with textures with opengl 2.0. I am able to make the aircraft with colors, but as soon as I try to apply textures, I'm not. Instead, I see a shaded gray screen. So I guess that the vertices of the geometry and the viewport, etc. are correct, but something wrong with the application of textures. Does anyone have a sample code snippet to bind the texture on a plane using opengl 2.0? I want to use the triangle strip.

    Here are the steps I used to create a simple plan with a texture

    -Once I've created the foreign window and initiated openGL.

    -This is my plane vertices and texture coordinates

    summits [0] = - 10.0f;
    summits [1] = - 10.0f;
    vertices [2] = - 10.0f;

    summits [3] = 10.0f;
    summits [4] = - 10.0f;
    summits [5] = - 10.0f;

    summits [6] = - 10.0f;
    summits [7] = 10.0f;
    summits [8] = - 10.0f;

    summits [9] = 10.0f;
    summits [10] = 10.0f;
    summits [11] = - 10.0f;

    textures [0] = 0;
    textures [1] = 0;
    textures [2] = 1;
    textures [3] = 0;
    textures [4] = 0;
    textures [5] = 1;
    textures [6] = 1;
    textures [7] = 1;

    const char * = vSource
    "precision float mediump;
    "uniform mat4 u_projection;
    "attribute vec2 a_TexCoordinate;
    "attribute vec4 a_position;
    "attribute vec4 a_color;
    "various vec4 v_color;
    "various vec2 v_texCoordinate;
    "Sub main().
    "{"
    "gl_Position = u_projection * a_position;
    "v_texCoordinate = a_TexCoordinate;"

    "v_color = a_color;"
    "}";

    const char * fSource =
    "various lowp vec4 v_color;
    "u_Texture sampler2D uniform;
    "various vec2 v_TexCoordinate;
    "Sub main().
    "{"
    "gl_FragColor = v_color;"
    "gl_FragColor = texture2D (u_Texture, v_TexCoordinate);"
    "}";

    -J' compiled the fragment and vertex shader and related program

    I created the projection with perspective view matrix

    GLuint projectionLoc is glGetUniformLocation (program, "u_projection");.
    GLfloat left = - 4.0f;
    GLfloat right = 4.0f;
    GLfloat low = - 3.0f;
    GLfloat top = 3.0f;
    GLfloat zNear = 4.0f;
    GLfloat zFar = 50.0f;
    GLfloat proj [16] = {2.0 * zNear / (right-left), //0}
    0, //1
    0, //2
    0, //3
    0, //4
    2.0 * zNear / (up-down), //5
    0, //6
    0, //7
    (right + left) / (right - left), //8
    (top + bottom) /(top-bottom), //9
    -(zFar+zNear) /(zFar-zNear), //10
    -1, //11
    0, / / 12
    0, / / 13
    -(2 * zFar * zNear) /(zFar-zNear), / / 14
    0}; 15

    -Generated vertex and filled with data
    glGenBuffers (1, & vertexID);
    glBindBuffer (GL_ARRAY_BUFFER, vertexID);
    glBufferData (GL_ARRAY_BUFFER, sizeof (vertices), tops, GL_STATIC_DRAW);

    -Generated in buffers for texture coordinates. It is perhaps here lies the problem.

    glGenBuffers (1, & textureId);
    glBindBuffer (GL_ARRAY_BUFFER, textureId);
    glBufferData (GL_ARRAY_BUFFER, sizeof (textures), textures, GL_STATIC_DRAW);

    -The extracted texture assets/images folder

    UINT textureArray [1];

    QString appFolder(QDir::homePath());)
    appFolder.chop (4);
    QString path = appFolder + ' / app/native/assets/images/left.jpg ';

    -J' used the method CreateTextures of the http://perso.limsi.fr/jacquemi/IG-TD/texjpeg.cpp link

    CreateTexture (textureArray, path.toAscii () .data (), 0);

    -Set viewport and activated 2d, texture etc.

    glViewport (0, 0, surface_width, surface_height);

    Typical render pass
    glClear(GL_COLOR_BUFFER_BIT |) GL_DEPTH_BUFFER_BIT);

    glClearDepthf(1.0f);
    glClearColor (0.0f, 1.0F, 0.0f, 1.0F);

    glEnable (gldisable(gl_cull_face));

    glEnable (GL_TEXTURE_2D);

    glEnable (GL_BLEND);

    -Permitted and bind the vertex data

    glEnableVertexAttribArray (positionLoc);
    glBindBuffer (GL_ARRAY_BUFFER, vertexID);
    glVertexAttribPointer (positionLoc, 3, GL_FLOAT, GL_FALSE, 3 * sizeof (GLfloat), 0);

    -Permitted and bind texture information. It is once again where the lies of the question can be

    glEnableVertexAttribArray (textureLoc);
    glBindBuffer (GL_ARRAY_BUFFER, textureId);
    glVertexAttribPointer (textureLoc, 2, GL_FLOAT, GL_FALSE, 4 * sizeof (GLfloat), 0);

    glUniformMatrix4fv (projectionLoc, 1, false, proj);
    glUniform1i(textureLoc,0);

    -Drew tables with GL_TIANGLE_STRIP

    glDrawArrays (GL_TRIANGLE_STRIP, 0, 4);

    Disable the berries of the attribute
    glDisableVertexAttribArray (positionLoc);
    glDisableVertexAttribArray (colorLoc);
    glDisableVertexAttribArray (textureLoc);

    -Stamps exchanged

    int rc = eglSwapBuffers (egl_disp, egl_surf);
    If (rc! = EGL_TRUE) {}
    fprintf (stderr, "Swap buffer failed\n");
    } else {}
    fprintf (stderr, "Swap buffer passed\n");
    }

    -Thanks in advance

    ~ {A * beep * osh}

    Try to capitalize the "t" in this line

    "various vec2 v_texCoordinate;

    in your vertex shader and see if that helps.

  • Having trouble getting an updated driver at the level of OpenGL 3.0

    I have what is called "integrated graphics" IE graphics card Intel (r) HD on a G6950 processor. Level OpenGL display is 2.1 but I want to run some new SW that requires 3.0 (I'm not a 'gamer', it's BASIC SOFTWARE ENGINEERING). If I ask Microsoft to update my driver he says that everything is up-to-date, if I ask Intel driver update, it indicates a higher number release exists, but for reasons that I do not understand that she refuses to install it and when I called them, they said that they didn't think that they had a "duty" to support the higher level! I understand that I COULD buy and install a 'real' graphics card (the two slots are apparently empty right now) but I do not understand, the on-board system is not THAT bad and the graphical utility shows he did 12 cores - how much should I I need a basic system? I mean I don't think that's the problem of Microsoft really everything, but if it should not be possible to help all around it's much better than this? Only 5 years of the system, I've owned previous systems a lot longer! Besides if I have a third graphics card, on what basis should I expect to support their product that is BETTER THAN the Intel? (I guess it would be the problem of Microsoft if the deficit were to the DirectX level?) And where in the docs for a possible card do I know what level THEY are "ready to support"? It's really blow my mind...

    The graphics Intel(r) HD on a G6950 processor card is limited to the Open GL 2.1.

    It is compatible with DX10 but not DX11.

    It is a hardware limitation. There is nothing that can be done to correct this.

    You may well have owned systems that were older than 5 years earlier, but didn't have never been

    facing material limitations like this, but 5 years is, unfortunately, a lot of time in the years of dog/computer. Especially with graphics.

    Apparently your cpu was released in 2010, and I think she's a first version of the most recent

    Graphics card Intel HD, which is integrated into the cpu vs a chip on the motherboard, but is a little too

    early to Open GL 3.0.

    «.. . If I get a third party graphics card, on what basis should I expect to support their product is BETTER THAN the Intel? »

    Intel is not a graphics support period long. It is at least partly due to the fact that drivers is modified according to motherboards, which requires that download you the drivers from the

    card mother mfg if you want a guarantee of stability and the card mother mfg and laptop mfg

    often provide an update of the driver after one or maybe two years.

    -However, Intel updates often drivers for their graphics for a longer period than the card mother mfg, so that you can sometimes download latest drivers for graphics card intel directly from

    Intel or even through updates of Windows (the "optional" section) and have no problem.

    MFG of dedicated graphics cards tend to support their cards with the new drivers for more

    periods ie - Nvidia drivers latest still support graphics cards, released in June 2010.

    They always supported the gpu in their pilots in July 2014 which have been published in ' 05

    Note that while pilots can still support these 'old' cards, there is little or no benefit

    update the drivers for the graphics over three years and "optimizations".

    more addressing the most recent series, in particular cards the last series (in large part because)

    the 'old' series was optimized to the maximum).

    Which brings back us to the motherboard. You may need an update to the BIOS of your motherboard

    to be able to recognize a current or previous series dedicated graphics card (with Nvidia is

    the 700 and 900 series cards).

    This is assuming that your motherboard has a recent enough BIOS update available.

    Then we come to the part concerning power. You should also check the power supply

    Watts/amps to run a card dedicated graphics and loose power supplies

    ability to produce current and complete stability current with age.

    It is less of a problem if you were to add a graphics card down range, as they can often operate

    off the PCIe slot, without electrical connection additional required.

    -Short answer...

    If you need this software for professional (or use the 'new' version at all).

    You can get a more recent machine, if you want to avoid complications.

    And with a new machine, you will not need to use a dedicated graphics card. The new Intel HD graphics

    are much more powerful than what you currently have, especially on the i5 cpu.

    -My 'old' i5 3570 cpu with HD 400 in 2012 can be exhausting to Open GL 4.0.
    In my view, are also capable of up to Open GL 4.0 i3 with HD3000, but have not verified this.

    You should always beware of what new cpu you use as not all of them have an integrated graphics card.

    EDIT: Did a double check and found this on the site of Open GL (this would be for the continued support and would not affect the Intel HD graphics which is able to use OpenGL 4.0) -.

    "Intel does not provide an implementation of OpenGL correct and up to date for their Integrated GPU. There is nothing that can be done about it. ATI and NVIDIA provide good support for their Integrated GPU. »

    .

  • GlRotatef OpenGL function may not work in the ForeignWindow control

    Hello

    I wrote a demo to display a rectangle rotated in control of foreignWindow, the rectangle has shown, but can not turn:

    So, is there something I'm doing wrong with the code, or is it just a limitation of foreignWindow?

    The following code is part of my demo:

    Sub MyForeignWindow::render()
    {
    glClear(GL_COLOR_BUFFER_BIT |) GL_DEPTH_BUFFER_BIT);

    glEnableClientState (GL_VERTEX_ARRAY);
    glVertexPointer (2, GL_FLOAT, 0, this-> top);

    glEnableClientState (GL_COLOR_ARRAY);
    glColorPointer (4, GL_FLOAT, 0, this-> colors);

    glRotatef (0.5f, 0.0F, 0.0F, 1.0F);

    glDrawArrays (GL_TRIANGLE_STRIP, 0, 4);

    glDisableClientState (GL_VERTEX_ARRAY);
    glDisableClientState (GL_COLOR_ARRAY);

    This-> swap();
    }

    try changing the angle of 45 degrees for example. ... it does not turn? or is there an opengl error?

    You can get this error with eglGetError()

    Do you use a glpushmatrix in another function of rendering (opengl is a statemachine!)

  • OpenGL create fails texture

    Hi, I wrote an application to display pictures with OpenGL ES 2.0 and Android APIs. But trying to create a texture of my loaded Bitmap, the GLSurfaceView shows just a black rectangle. The rectangle has the same proportions as my loaded image, so I guess that, only the color of image data are missing. Application of a shader with the texture, I can change the color (for example in a white rectangle). Therefore: - GLSufaceView - works. -Shader - work - open InputStream and get a picture - work the only thing in the middle is the texture to create call. I follow the example android, see here: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLES20... Can someone help me? Did anyone have experience with OpenGL ES 2.0 and upload texture on Playbook? Is there a good way to debug the application? Currently I use AlertDialog for information. How can I get the LogCat messages? Thanks - Robert

    The texture should be square and the width and height should be something of a power of 2 (= 1024). Sorry for the confusion.

  • Button menu at the top of the surface of the OpenGL

    I'm working on a project that uses OpenGL ES 1.1. Now I want to place buttons of Menus &, resembling a little to a HUD.

    What is the best way to do something like that?
    I understand that there is probably a lot of games using this because it seems natural quiet.

    Is it possible to use Qt on top of the surface of OpenGL?

    Is there some demo Apps out there that do exactly what?

    I have searched for it, but couldn't really find anything that addresses this issue.

    Clean user interface-> you want a button.

    Draw a rectangular shape with rounded corners, put a text in it.

    Next to main event processing listen touch event. The touch event check if a user has touched within the limits of your button, change Yes wait your button Pressed (argument) and reacts to this press event.

    Yes, it's a lot of work. I did once to a single application and it does not require a lot of coding.

    On a plus side once you develop this 'infrastructure' of your own interface user then you can reuse it in all your applications.

  • How can Minecraft says that it cannot find an opengl driver accelerated, I solve this?

    Minecraft 1.8 gives an error after I connect. It says that it cannot find an accelerated opengl driver. I tried to update my video card driver, but this is the best update. Please help ASAP!

    If you have visited the website of the manufacturer for any device video you have physically installed on your computer (what is it?)  Make and model)? and you couldn't find a better driver * or * you used the very limited built-in to Windows?

  • Questions of OpenGL (crash) on Ubuntu 16.04

    Hi, we develop software on Ubuntu, and of course, we use VMware for that, for all the usual reasons large. We use an API that supports Ubuntu 12.04, 14.04 and now 16.04. We decided to go to 16.04, like its new and shiny. But it seems to be serious problems with OpenGL in 16.04, breaking OpenGL based apps. Or else, they work and produced a terrible performance.

    My setup is...

    Mac Pro end of 2013

    32 GB of Ram

    AMD Fire Pro D700 / 6 GB of RAM

    VMWare Fusion 8.1.1

    And we're runing 16.04 Ubuntu on a virtual computer

    Our own app running, you get a stack trace, which is the last error...

    (/opt/oblong/g-speak3.24/lib/libNoodoo.so.2 oblong::noodoo:WindowedLinuxVisiFeld:DisestablishRenderConditions(oblong::Basement::atmosphere*))

    The problem which seems to be with WindowedLinuxVisiFeld, which is an OpenGL who are attracted by the elements in our API window. This only happens that we load in attracted ex OpenGL Bitmap files. If my guess is, its bombing he's trying to put the mipMaps for the BitMaps. Why? Well well...

    When I run glmark2 on the same machine I receive, this

    =======================================================

    glmark2 2014.03 + git20150611.fa71af2d

    =======================================================

    OpenGL information

    GL_VENDOR: VMware, Inc..

    GL_RENDERER: Gallium 0.4 on SVGA3D; build: the SHOW;  LLVM;

    GL_VERSION: 3.0 Mesa 11.2.0

    =======================================================

    [build] use-vbo = false: FPS: 2063 FrameTime: 0.485 ms

    [build] use-vbo = true: FPS: 2198 FrameTime: 0,455 ms

    [texture] texture-filter = nearest: FPS: 2205 FrameTime: 0,454 ms

    [texture] texture-filter = linear: FPS: 2207 FrameTime: 0.453 ms

    [texture] texture-filter = mipmap:VMware: invalid argument to vmw_ioctl_command error.

    Program received signal SIGABRT, abandoned.

    0x00007ffff6779418 in __GI_raise (sig=sig@entry=6) to... /sysdeps/UNIX/SysV/Linux/Raise.c:54

    54... /sysdeps/UNIX/SysV/Linux/Raise.c: no such file or directory.

    (gdb) bt

    #0 0x00007ffff6779418 in __GI_raise (sig=sig@entry=6) to... /sysdeps/UNIX/SysV/Linux/Raise.c:54

    #1 0x00007ffff677b01a (__GI_abort at abort.c:89)

    #2 0x00007ffff351a99f in? (from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so)

    #3 0x00007ffff3518629 in? (from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so)

    #4 0x00007ffff352003d in? (from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so)

    #5 0x00007ffff312b7da in? (from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so)

    #6 0x00007ffff320463a in? (from /usr/lib/x86_64-linux-gnu/dri/vmwgfx_dri.so)

    #7 0x00007ffff73f3b04 in? (from /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1)

    #8 0x00007ffff73f3ee7 in? (from /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1)

    #9 0x000000000050f3c2 in? ()

    #10 0x000000000041036f in? ()

    #11 0x00000000004121d8 in? ()

    #12 0x0000000000406d6f in? ()

    #13 0x00007ffff6764830 in __libc_start_main (main = 0 x 406710, argc = 1, argv = 0x7fffffffdf48, init = < optimized on >, finished = < optimized on >, rtld_fini = < optimized on >,)

    stack_end = 0x7fffffffdf38) to... /CSU/libc-Start.c:291

    A colleague has glmark2 on a physical machine from Ubuntu16.04, and it has not crashed. BUT there does appear to be a pretty awful performance, with a score of 200, compared to 2000 + on Ubuntu VMWare 14.04. It was also to launch a large NUMBER of errors.

    It looks like VMWare can do something to remedy this situation?

    HM, this might be a limitation of our stack of graphics, but we have the graphic team to take a look.

    fubvmware

Maybe you are looking for