Fast GPU Image Processing in the i.MX 6x

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Fast GPU Image Processing in the i.MX 6x

Fast GPU Image Processing in the i.MX 6x

Fast GPU Image Processing in the i.MX 6x

by Guillermo Hernandez, Freescale

Introduction

Color tracking is useful as a base for complex image processing use cases, like determining what parts of an image belong to skin is very important for face detection or hand gesture applications.

In this example we will present a method that is robust enough to take some noise and blur, and different lighting conditions thanks to the use of OpenGL ES 2.0 shaders running in the i.MX 6X  multimedia processor.

Prerequisites

This how-to assumes that the reader is an experienced i.mx developer and is familiar with the tools and techniques around this technology, also this paper assumes the reader has intermediate graphics knowledge and experience such as the RGBA structure of pictures and video frames and programming OpenGL based applications, as we will not dig in the details of the basic setup.

Scope

Within this paper, we will see how to implement a very fast color tracking application that uses the GPU instead of the CPU using OpenGL ES 2.0 shaders.

Step 1: Gather all the components

For this example we will use:

1.      i.MX6q ARD platform

2.      Linux ER5

3.      Oneric rootfs with ER5 release packages

4.      Open CV 2.0.0 source

Step 2: building everything you need

Refer to ER5 User´s Guide and Release notes on how to build and boot the board with the Ubuntu Oneric rootfs. After you are done, you will need to build the Open CV 2.0.0 source in the board, or you could add it to the ltib and have it built for you.

NOTE: We will be using open CV only for convenience purposes, we will not use any if its advanced math or image processing  features (because everything happens on the CPU and that is what we are trying to avoid), but rather to have an easy way of grabbing and managing  frames from the USB camera.

Step 3: Application setup

Make sure that at this point you have a basic OpenGL Es 2.0 application running, a simple plane with a texture mapped to it should be enough to start. (Please refer to Freescale GPU examples).

Step 4: OpenCV auxiliary code

The basic idea of the workflow is as follows:

a)      Get the live feed from the USB camera using openCV function cvCapture() and store into IplImage structure.

b)      Create an OpenGL  texture that reads the IplImage buffer every frame and map it to a plane in OpenGL ES 2.0.

c)      Use the Fragment Shader to perform fast image processing calculations, in this example we will examine the Sobel Filter and Binary Images that are the foundations for many complex Image Processing algorithms.

d)      If necessary, perform multi-pass rendering to chain several image processing shaders  and get an end result.

First we must import our openCV relevant headers:

#include "opencv/cv.h"

#include "opencv/cxcore.h"

#include "opencv/cvaux.h"

#include "opencv/highgui.h"

Then we should define a texture size, for this example we will be using 320x240, but this can be easily changed to 640 x 480

#define TEXTURE_W 320

#define TEXTURE_H 240

We need to create an OpenCV capture device to enable its V4L camera and get the live feed:

CvCapture *capture;

capture = cvCreateCameraCapture (0);

cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_WIDTH,  TEXTURE_W);

cvSetCaptureProperty (capture, CV_CAP_PROP_FRAME_HEIGHT, TEXTURE_H);

Note: when we are done, remember to close the camera stream:

cvReleaseCapture (&capture);

OpenCV has a very convenient structure used for storing pixel arrays (a.k.a. images) called IplImage

IplImage *bgr_img1;

IplImage *frame1;

bgr_img1 = cvCreateImage (cvSize (TEXTURE_W, TEXTURE_H), 8, 4);

OpenCV has a very convenient function for capturing a frame from the camera and storing it into a IplImage

frame2 = cvQueryFrame(capture2);

Then we will want to separate the camera capture process from the pos-processing filters and final rendering; hence, we should create a thread to exclusively handle the camera:

#include <pthread.h>

pthread_t camera_thread1;

pthread_create (&camera_thread1, NULL, UpdateTextureFromCamera1,(void *)&thread_id);

Your UpdateTextureFromCamera() function should be something like this:

void *UpdateTextureFromCamera2 (void *ptr)

{

      while(1)

      {

            frame2 = cvQueryFrame(capture);

            //cvFlip (frame2, frame2, 1);  // mirrored image

            cvCvtColor(frame2, bgr_img2, CV_BGR2BGRA);

      }

      return NULL;   

}

Finally, the rendering loop should be something like this:

while (! window->Kbhit ())

      {

           

            tt = (double)cvGetTickCount();

            Render ();

            tt = (double)cvGetTickCount() - tt;

            value = tt/(cvGetTickFrequency()*1000.);

            printf( "\ntime = %gms --- %.2lf FPS", value, 1000.0 / value);

            //key = cvWaitKey (30);

      }

     

Step 5: Map the camera image to a GL Texture

As you can see, you need a Render function call every frame, this white paper will not cover in detail the basic OpenGL  or EGL setup of the application, but we would rather focus on the ES 2.0 shaders.

GLuint _texture;

GLeglImageOES g_imgHandle;

IplImage *_texture_data;

The function to map the texture from our stored pixels in IplImage is quite simple: we just need to get the image data, that is basically a pixel array

void GLCVPlane::PlaneSetTex (IplImage *texture_data)

{

      cvCvtColor (texture_data, _texture_data, CV_BGR2RGB);

      glBindTexture(GL_TEXTURE_2D, _texture);

      glTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, _texture_w, _texture_h, 0, GL_RGB, GL_UNSIGNED_BYTE, _texture_data->imageData);

}

This function should be called inside our render loop:

void Render (void)

{

  glClearColor (0.0f, 0.0f, 0.0f, 0.0f);

  glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

  PlaneSetTex(bgr_img1);

}

At this point the OpenGL texture is ready to be used as a sampler in our Fragment Shader  mapped to a 3D plane

Lastly,  when you are ready to draw your plane with the texture in it:

// Set the shader program

glUseProgram (_shader_program);

// Binds this texture handle so we can load the data into it

/* Select Our Texture */

glActiveTexture(GL_TEXTURE0);

//Select eglImage

glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, g_imgHandle);

glDrawArrays (GL_TRIANGLES, 0, 6);

Step 6: Use the GPU to do Image Processing


First we need to make sure we have the correct Vertex Shader and Fragment shader, we will  focus only in the Fragment Shader, this is where we will process our image from the camera.

Below you will find the most simple fragment shader, this one only colors pixels from the sample texture

const char *planefrag_shader_src =

      "#ifdef GL_FRAGMENT_PRECISION_HIGH                    \n"

      "  precision highp float;                            \n"

      "#else                                          \n"

      "  precision mediump float;                    \n"

      "#endif                                        \n"

      "                                              \n"

      "uniform sampler2D s_texture;                  \n"

      "varying  vec3      g_vVSColor;                      \n"

      "varying  vec2 g_vVSTexCoord;                        \n"

      "                                              \n"

      "void main()                                    \n"

      "{                                              \n"

      "    gl_FragColor = texture2D(s_texture,g_vVSTexCoord);    \n"

      "}                                              \n";

Binary Image

The most Simple Image Filter is the Binary Image, this one converts a source image to a black/white output, to decide if a color should be black or white we need a threshold,  everything below that threshold will be black, and any color above should be white.

             

The shader code is as follows:

const char* g_strRGBtoBlackWhiteShader =

    #ifdef GL_FRAGMENT_PRECISION_HIGH                     

      precision highp float;                       

    #else                                     

      precision mediump float;                     

    #endif                                     

      varying  vec2 g_vVSTexCoord;           

      uniform sampler2D s_texture;             

      uniform float threshold;                 

                                               

      void main() {                           

        vec3 current_Color = texture2D(s_texture,g_vVSTexCoord).xyz;

        float luminance = dot (vec3(0.299,0.587,0.114),current_Color);

        if(luminance>threshold)                      \n"

            gl_FragColor = vec4(1.0);                \n"

          else                                  \n"             

            gl_FragColor = vec4(0.0);                \n"

      }                                        \n";

You can notice that the main operation is to get a luminance value of the pixel, in order to achieve that we have to multiply a known vector (obtained empirically) by the current pixel, then we simply compare that luminance value with a threshold. Anything below that threshold will be black, and anything above that threshold will be considered a white pixel.

SOBEL Operator

Sobel is a very common filter, since it is used as a foundation for many complex Image Processing processes, particularly in edge detection algorithms. The sobel operator is based in convolutions, the convolution is made of a particular mask, often called a kernel (on common therms, usually a 3x3 matrix).

The sobel operator calculates the gradient of the image at each pixel, so it tells us how it changes from the pixels surrounding the current pixel , meaning how it increases or decreases (darker to brighter values).

         

The shader is a bit long, since several operations must be performed, we shall discuss each of its parts below:

First we need to get the texture coordinates from the Vertex Shader:

const char* plane_sobel_filter_shader_src =

#ifdef GL_FRAGMENT_PRECISION_HIGH                   

precision highp float;                         

#else                                   

precision mediump float;                       

#endif                                         

varying  vec2 g_vVSTexCoord;                 

uniform sampler2D s_texture;                   

Then we should define our kernel, as stated before, a 3x3 matrix should be enough, and the following values have been tested with good results:

mat3 kernel1 = mat3 (-1.0, -2.0, -1.0,                   

                      0.0, 0.0, 0.0,                       

                      1.0, 2.0, 1.0);   

We also need a convenient way to convert to grayscale, since we only need grayscale information for the Sobel operator, remember that to convert to grayscale you only need an average of the three colors:

float toGrayscale(vec3 source) {                   

float average = (source.x+source.y+source.z)/3.0;       

return average;             

}

Now we go to the important part, to actually perform the convolutions. Remember that by the OpenGL ES 2.0 spec, nor recursion nor dynamic indexing is supported, so we need to do our operations the hard way: by defining vectors and multiplying them. See the following code:

  float doConvolution(mat3 kernel) {                           

  float sum = 0.0;                                 

  float current_pixelColor = toGrayscale(texture2D(s_texture,g_vVSTexCoord).xyz);

float xOffset = float(1)/1024.0;                   

float yOffset = float(1)/768.0;

float new_pixel00 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-  xOffset,g_vVSTexCoord.y-yOffset)).xyz);

float new_pixel01 = toGrayscale(texture2D(s_texture,

vec2(g_vVSTexCoord.x,g_vVSTexCoord.y-yOffset)).xyz);

float new_pixel02 = toGrayscale(texture2D(s_texture,  vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y-yOffset)).xyz);

vec3 pixelRow0 = vec3(new_pixel00,new_pixel01,new_pixel02);

float new_pixel10 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-xOffset,g_vVSTexCoord.y)).xyz);\n"

float new_pixel11 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x,g_vVSTexCoord.y)).xyz);

float new_pixel12 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y)).xyz);

vec3 pixelRow1 = vec3(new_pixel10,new_pixel11,new_pixel12);

float new_pixel20 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x-xOffset,g_vVSTexCoord.y+yOffset)).xyz);

float new_pixel21 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x,g_vVSTexCoord.y+yOffset)).xyz);

float new_pixel22 = toGrayscale(texture2D(s_texture, vec2(g_vVSTexCoord.x+xOffset,g_vVSTexCoord.y+yOffset)).xyz);

vec3 pixelRow2 = vec3(new_pixel20,new_pixel21,new_pixel22);

vec3 mult1 = (kernel[0]*pixelRow0);                 

vec3 mult2 = (kernel[1]*pixelRow1);                 

vec3 mult3 = (kernel[2]*pixelRow2);                 

sum= mult1.x+mult1.y+mult1.z+mult2.x+mult2.y+mult2.z+mult3.x+

    mult3.y+mult3.z;\n"

    return sum;                               

      }

If you see the last part of our function, you can notice that we are adding the multiplication values to a sum, with this sum we will see the variation of each pixel regarding its neighbors.

The last part of the shader is where we will use all our previous functions, it is worth to notice that the convolution needs to be applied horizontally and vertically for this technique to be complete:

void main() {                                 

  float horizontalSum = 0.0;                         

  float verticalSum = 0.0;                     

  float averageSum = 0.0;                     

  horizontalSum = doConvolution(kernel1);     

  verticalSum = doConvolution(kernel2);       

    if( (verticalSum > 0.2)|| (horizontalSum >0.2)||(verticalSum < -0.2)|| (horizontalSum <-0.2))           

            averageSum = 0.0;                 

    else                                       

            averageSum = 1.0;                 

  gl_FragColor = vec4(averageSum,averageSum,averageSum,1.0);         

      }   

Conclusions and future work

At this point, if you have your application up and running, you can notice that Image Processing can be done quite fast, even with images larger than 640 480. This approach can be expanded to a variety of techniques like Tracking, Feature detection and Face detection.

However, these techniques are out of scope for now, because this algorithms need multiple rendering passes (like face detection), where we need to perform an operation, then write the result to an offscreen buffer and use that buffer as an input for the next shader and so on.  But Freescale is planning to release an Application Note in Q4 2012 that will expand this white paper and cover these techniques in detail.

ラベル(3)
タグ(2)
コメント

Investigate using GStreamer (v4l2src or mfw_v4lsrc) instead of OpenCV for the image capture.  This would prevent you from having to do the Oneiric rootfs step.

See this post to improve the performance of step 5. The glTexImage2D method is rather slow.

Computer Vision on i.MX Processors: Video to Texture Streaming (Part 3) - i.MX6 processor

Hi, jodipaul

Would you like to provide the complete sample code?

Best regards.

%3CLINGO-SUB%20id%3D%22lingo-sub-1108479%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Ei.MX%206x%20%E3%81%AE%E9%AB%98%E9%80%9F%20GPU%20%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1108479%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010pt%3B%22%3Ei.MX%206x%20%E3%81%AE%E9%AB%98%E9%80%9F%20GPU%20%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2010pt%3B%22%3Eby%20%E3%82%AE%E3%82%B8%E3%82%A7%E3%83%AB%E3%83%A2%E3%83%BB%E3%83%98%E3%83%AB%E3%83%8A%E3%83%B3%E3%83%87%E3%82%B9%2C%20%E3%83%95%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%82%AB%E3%83%A9%E3%83%BC%E3%83%88%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%81%AF%E3%80%81%E9%A1%94%E6%A4%9C%E5%87%BA%E3%82%84%E3%83%8F%E3%83%B3%E3%83%89%E3%82%B8%E3%82%A7%E3%82%B9%E3%83%81%E3%83%A3%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E3%80%81%E7%94%BB%E5%83%8F%E3%81%AE%E3%81%A9%E3%81%AE%E9%83%A8%E5%88%86%E3%81%8C%E8%82%8C%E3%81%AB%E5%B1%9E%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%92%E5%88%A4%E6%96%AD%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%87%8D%E8%A6%81%E3%81%A7%E3%81%82%E3%82%8B%E3%81%AA%E3%81%A9%E3%80%81%E8%A4%87%E9%9B%91%E3%81%AA%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%82%B9%E3%81%AE%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A8%E3%81%97%E3%81%A6%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81%E3%83%8E%E3%82%A4%E3%82%BA%E3%82%84%E3%81%BC%E3%81%8B%E3%81%97%E3%80%81i.MX%206X%20%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2%20%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E3%81%A7%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%82%8B%20OpenGL%20ES%202.0%20%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E4%BD%BF%E7%94%A8%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E7%85%A7%E6%98%8E%E6%9D%A1%E4%BB%B6%E3%81%8C%E7%99%BA%E7%94%9F%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%8D%81%E5%88%86%E3%81%AA%E5%A0%85%E7%89%A2%E6%80%A7%E3%82%92%E6%8C%81%E3%81%A4%E6%96%B9%E6%B3%95%E3%82%92%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E5%89%8D%E6%8F%90%E6%9D%A1%E4%BB%B6%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E3%83%8F%E3%82%A6%E3%83%84%E3%83%BC%E3%81%AF%E3%80%81%E8%AA%AD%E8%80%85%E3%81%8C%E7%B5%8C%E9%A8%93%E8%B1%8A%E5%AF%8C%E3%81%AA%20i.mx%20%E9%96%8B%E7%99%BA%E8%80%85%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E3%81%93%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8E%E3%83%AD%E3%82%B8%E3%83%BC%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB%E3%81%A8%E6%89%8B%E6%B3%95%E3%81%AB%E7%B2%BE%E9%80%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E5%89%8D%E6%8F%90%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%BE%E3%81%9F%E3%80%81%E3%81%93%E3%81%AE%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%20%E3%83%9A%E3%83%BC%E3%83%91%E3%83%BC%E3%81%A7%E3%81%AF%E3%80%81%E8%AA%AD%E8%80%85%E3%81%8C%E7%94%BB%E5%83%8F%E3%82%84%E3%83%93%E3%83%87%E3%82%AA%20%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%81%AE%20RGBA%20%E6%A7%8B%E9%80%A0%E3%82%84%20OpenGL%20%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AA%E3%81%A9%E3%81%AE%E4%B8%AD%E7%B4%9A%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E7%9F%A5%E8%AD%98%E3%81%A8%E7%B5%8C%E9%A8%93%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E5%89%8D%E6%8F%90%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%AE%E8%A9%B3%E7%B4%B0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E8%A9%B3%E3%81%97%E3%81%8F%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E5%AF%BE%E8%B1%A1%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%20%E3%83%9A%E3%83%BC%E3%83%91%E3%83%BC%E3%81%A7%E3%81%AF%E3%80%81OpenGL%20ES%202.0%20%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%80%81CPU%20%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%20GPU%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%AB%98%E9%80%9F%E3%81%AA%E3%82%AB%E3%83%A9%E3%83%BC%20%E3%83%88%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%201%3A%20%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88%E3%82%92%E5%8F%8E%E9%9B%86%E3%81%99%E3%82%8B%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81%E6%AC%A1%E3%81%AE%E3%82%82%E3%81%AE%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3E1.%20%3C%2FSPAN%3Ei.MX6q%20ARD%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3E2.%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3ELinux%20ER5%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3E3.%20%3C%2FSPAN%3EER5%20%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%20Oneric%20rootfs%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3E4.%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3EOpen%20CV%202.0.0%20source%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%972%3A%E5%BF%85%E8%A6%81%E3%81%AA%E3%82%82%E3%81%AE%E3%82%92%E3%81%99%E3%81%B9%E3%81%A6%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EUbuntu%20Oneric%20rootfs%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%83%96%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E3%80%81ER5%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%BA%E3%82%AC%E3%82%A4%E3%83%89%E3%81%A8%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%83%8E%E3%83%BC%E3%83%88%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E5%AE%8C%E4%BA%86%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7Open%20CV%202.0.0%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81ltib%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E6%89%8B%E8%A8%98%EF%BC%9A%3C%2FSTRONG%3E%20%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%AF%E4%BE%BF%E5%AE%9C%E4%B8%8A%E3%81%AE%E7%9B%AE%E7%9A%84%E3%81%A7%E3%81%AE%E3%81%BF%E3%82%AA%E3%83%BC%E3%83%97%E3%83%B3CV%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%80%81%E3%81%9D%E3%81%AE%E9%AB%98%E5%BA%A6%E3%81%AA%E6%95%B0%E5%AD%A6%E3%82%84%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E6%A9%9F%E8%83%BD(%E3%81%99%E3%81%B9%E3%81%A6%E3%81%8CCPU%E4%B8%8A%E3%81%A7%E7%99%BA%E7%94%9F%E3%81%97%E3%80%81%E3%81%9D%E3%82%8C%E3%81%8C%E7%A7%81%E3%81%9F%E3%81%A1%E3%81%8C%E9%81%BF%E3%81%91%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%82%E3%81%AE%E3%81%A7%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81)%E3%81%AF%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81USB%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%8B%E3%82%89%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%A6%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E7%B0%A1%E5%8D%98%E3%81%AA%E6%96%B9%E6%B3%95%E3%82%92%E6%8C%81%E3%81%A4%E3%81%9F%E3%82%81%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%973%3A%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E6%99%82%E7%82%B9%E3%81%A7%E3%80%81%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%20OpenGL%20Es%202.0%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%8C%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%80%81%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%81%8C%E3%83%9E%E3%83%83%E3%83%97%E3%81%95%E3%82%8C%E3%81%9F%E5%8D%98%E7%B4%94%E3%81%AA%E5%B9%B3%E9%9D%A2%E3%81%A7%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E5%8D%81%E5%88%86%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82(%E3%83%95%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%AEGPU%E3%81%AE%E4%BE%8B%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84)%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%20style%3D%22font-size%3A%2014pt%3B%22%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%974%3AOpenCV%E8%A3%9C%E5%8A%A9%E3%82%B3%E3%83%BC%E3%83%89%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%83%AF%E3%83%BC%E3%82%AF%E3%83%95%E3%83%AD%E3%83%BC%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E8%80%83%E3%81%88%E6%96%B9%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3Ea)%20%3C%2FSPAN%3EopenCV%20%E9%96%A2%E6%95%B0%20cvCapture()%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20USB%20%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%8B%E3%82%89%E3%83%A9%E3%82%A4%E3%83%96%20%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%80%81IplImage%20%E6%A7%8B%E9%80%A0%E4%BD%93%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3Eb)%20%3C%2FSPAN%3E%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%81%94%E3%81%A8%E3%81%AB%20IplImage%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%20OpenGL%20%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%80%81OpenGL%20ES%202.0%20%E3%81%A7%E3%83%97%E3%83%AC%E3%83%BC%E3%83%B3%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3Ec)%20%3C%2FSPAN%3E%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E9%AB%98%E9%80%9F%E3%81%AA%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E8%A8%88%E7%AE%97%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%80%81%E3%81%93%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81%E5%A4%9A%E3%81%8F%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%AA%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%81%A8%E3%81%AA%E3%82%8B%E3%82%BD%E3%83%BC%E3%83%99%E3%83%AB%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%81%A8%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E7%94%BB%E5%83%8F%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%20style%3D%22text-indent%3A%20-0.25in%3B%22%3E%3CSPAN%20class%3D%22pasted-list-info%22%3Ed)%20%3C%2FSPAN%3E%E5%BF%85%E8%A6%81%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E3%80%81%E3%83%9E%E3%83%AB%E3%83%81%E3%83%91%E3%82%B9%20%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E8%A4%87%E6%95%B0%E3%81%AE%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E3%81%97%E3%80%81%E6%9C%80%E7%B5%82%E7%B5%90%E6%9E%9C%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9A%E3%80%81openCV%E9%96%A2%E9%80%A3%E3%81%AE%E3%83%98%E3%83%83%E3%83%80%E3%83%BC%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23include%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8Copencv%2Fcv.h%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23include%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8Copencv%2Fcxcore.h%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23include%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8Copencv%2Fcvaux.h%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23include%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8Copencv%2Fhighgui.h%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF320x240%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E7%B0%A1%E5%8D%98%E3%81%AB640%20x%20480%E3%81%AB%E5%A4%89%E6%9B%B4%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23define%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20TEXTURE_W%20320%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23define%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20TEXTURE_H%20240%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EV4L%20%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%97%E3%81%A6%E3%83%A9%E3%82%A4%E3%83%96%20%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%80%81OpenCV%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3ECvCapture%20*%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%3B%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%3D%20cvCreateCameraCapture%20(0)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EcvSetCaptureProperty%20(%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%80%81CV_CAP_PROP_FRAME_WIDTH%E3%80%81TEXTURE_W)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EcvSetCaptureProperty%20(%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%80%81CV_CAP_PROP_FRAME_HEIGHT%E3%80%81TEXTURE_H)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSTRONG%3E%E6%B3%A8%3A%3C%2FSTRONG%3E%20%E5%AE%8C%E4%BA%86%E3%81%97%E3%81%9F%E3%82%89%E3%80%81%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%A0%E3%82%92%E9%96%89%E3%81%98%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E5%BF%98%E3%82%8C%E3%81%AA%E3%81%84%E3%81%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EcvReleaseCapture%20(%26amp%3B%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EOpenCV%E3%81%AF%E3%80%81%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E9%85%8D%E5%88%97(%E5%88%A5%E5%90%8Dimages)%20%E3%82%92%20IplImage%20%E3%81%A8%E5%91%BC%E3%81%B3%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EIplImage%20*bgr_img1%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EIplImage%20*frame1%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Ebgr_img1%20%3D%20cvCreateImage%20(cvSize%20(TEXTURE_W%2C%20TEXTURE_H)%2C%208%2C%204)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EOpenCV%E3%81%AB%E3%81%AF%E3%80%81%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%8B%E3%82%89%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%82%92%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%97%E3%81%A6IplImage%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E9%9D%9E%E5%B8%B8%E3%81%AB%E4%BE%BF%E5%88%A9%E3%81%AA%E6%A9%9F%E8%83%BD%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A02%20%3D%20cvQueryFrame(%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A32)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%92pos-processing%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%81%A8%E6%9C%80%E7%B5%82%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%8B%E3%82%89%E5%88%86%E9%9B%A2%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%97%E3%81%9F%E3%81%8C%E3%81%A3%E3%81%A6%E3%80%81%E3%82%AB%E3%83%A1%E3%83%A9%E3%82%92%E6%8E%92%E4%BB%96%E7%9A%84%E3%81%AB%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%23include%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%3CPTHREAD.H%3E%3C%2FPTHREAD.H%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Epthread_t%20camera_thread1%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Epthread_create%20(%26amp%3Bcamera_thread1%2C%20NULL%2C%20UpdateTextureFromCamera1%2C(%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Evoid%3C%2FSPAN%3E%20*)%26amp%3Bthread_id)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EUpdateTextureFromCamera()%20%E9%96%A2%E6%95%B0%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20*UpdateTextureFromCamera2%20(%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Evoid%3C%2FSPAN%3E%20*ptr)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Ewhile%3C%2FSPAN%3E(1)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A02%20%3D%20cvQueryFrame(%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20green%3B%22%3EcvFlip%20(%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%202%2C%20%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%202%2C%201)%3B%20%E3%83%9F%E3%83%A9%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%81%9F%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20cvCvtColor(frame2%2C%20bgr_img2%2C%20CV_BGR2BGRA)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Ereturn%3C%2FSPAN%3E%20NULL%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%80%E5%BE%8C%E3%81%AB%E3%80%81%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E3%81%AF%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%E4%B8%80%E6%96%B9%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20(!%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6%26gt%3BKbhit())%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Ett%20%3D%20(%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Edouble%3C%2FSPAN%3E)cvGetTickCount()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20Render%20()%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Ett%20%3D%20(%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Edouble%3C%2FSPAN%3E)cvGetTickCount()%20-%20tt%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%E5%80%A4%20%3D%20tt%2F(cvGetTickFrequency()*1000.)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3Eprintf(%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%5Cntime%20%3D%20%25gms%20---%20%25.2lf%20FPS%22%3C%2FSPAN%3E%2C%20%E5%80%A4%2C%201000.0%20%2F%20%E5%80%A4)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F%2F%3CSPAN%20style%3D%22color%3A%20green%3B%22%3Ekey%20%3D%20cvWaitKey%20(30)%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%205%3A%20%E3%82%AB%E3%83%A1%E3%83%A9%E7%94%BB%E5%83%8F%E3%82%92%20GL%20%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%94%E8%A6%A7%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%80%81%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%81%94%E3%81%A8%E3%81%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E9%96%A2%E6%95%B0%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%E3%83%9A%E3%83%BC%E3%83%91%E3%83%BC%E3%81%A7%E3%81%AF%E3%80%81%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AAOpenGL%E3%81%BE%E3%81%9F%E3%81%AFEGL%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%81%AF%E8%A9%B3%E3%81%97%E3%81%8F%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8C%E3%80%81ES%202.0%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AB%E7%84%A6%E7%82%B9%E3%82%92%E5%BD%93%E3%81%A6%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EGLuint%20_texture%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EGLeglImageOES%20g_imgHandle%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EIplImage%20*_texture_data%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EIplImage%E3%81%AB%E4%BF%9D%E5%AD%98%E3%81%95%E3%82%8C%E3%81%9F%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%8B%E3%82%89%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%92%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E3%81%AF%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%8D%98%E7%B4%94%E3%81%A7%E3%81%99%3A%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%80%81%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AB%E3%81%AF%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E9%85%8D%E5%88%97%E3%81%A7%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20GLCVPlane%3A%3APlaneSetTex%20(IplImage%20*texture_data)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20cvCvtColor%20(texture_data%2C%20_texture_data%2C%20CV_BGR2RGB)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20glBindTexture(GL_TEXTURE_2D%2C%20_texture)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20glTexImage2D%20(GL_TEXTURE_2D%2C%200%2C%20GL_RGB%2C%20_texture_w%2C%20_texture_h%2C%200%2C%20GL_RGB%2C%20GL_UNSIGNED_BYTE%2C%20_texture_data-%26gt%3BimageData)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%E3%81%93%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%AF%E3%80%81%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97%E5%86%85%E3%81%A7%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3Evoid%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20Render%20(%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Evoid%3C%2FSPAN%3E)%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglClearColor%20(0.0f%E3%80%810.0f%E3%80%810.0f%E3%80%810.0f)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglClear(GL_COLOR_BUFFER_BIT%20%7CGL_DEPTH_BUFFER_BIT)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EPlaneSetTex(bgr_img1)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E6%99%82%E7%82%B9%E3%81%A7%E3%80%81OpenGL%20%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%92%203D%20%E5%B9%B3%E9%9D%A2%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%81%9F%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%A9%E3%83%BC%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%BA%96%E5%82%99%E3%81%8C%E6%95%B4%E3%81%84%E3%81%BE%E3%81%97%E3%81%9F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fskins%2Fimages%2F0CBF4B305FA47E4E51CF451005BF743F%2Fresponsive_peak%2Fimages%2Fimage_not_found.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%80%E5%BE%8C%E3%81%AB%E3%80%81%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%92%E5%90%AB%E3%82%80%E5%B9%B3%E9%9D%A2%E3%82%92%E6%8F%8F%E7%94%BB%E3%81%99%E3%82%8B%E6%BA%96%E5%82%99%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%9F%E3%82%89%E3%80%81%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20green%3B%20font-size%3A%2010pt%3B%22%3E%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglUseProgram(_shader_program)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E2%80%A6%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20green%3B%20font-size%3A%2010pt%3B%22%3E%E3%81%93%E3%81%AE%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%20%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%E3%82%92%E3%83%90%E3%82%A4%E3%83%B3%E3%83%89%E3%81%97%E3%81%A6%E3%80%81%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A7%E3%81%8D%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%BE%E3%81%99%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20green%3B%20font-size%3A%2010pt%3B%22%3E%2F*%20%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%82%92%E9%81%B8%E6%8A%9E%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglActiveTexture(GL_TEXTURE0)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20green%3B%20font-size%3A%2010pt%3B%22%3EeglImage%E3%82%92%E9%81%B8%E6%8A%9E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglEGLImageTargetTexture2DOES(GL_TEXTURE_2D%2C%20g_imgHandle)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3EglDrawArrays%20(GL_TRIANGLES%2C%200%2C%206)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E3%82%B9%E3%83%86%E3%83%83%E3%83%976%3AGPU%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%82%92%E8%A1%8C%E3%81%86%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%3CBR%20%2F%3E%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9A%E3%80%81%E6%AD%A3%E3%81%97%E3%81%84%E9%A0%82%E7%82%B9%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%A8%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AB%E3%81%AE%E3%81%BF%E7%84%A6%E7%82%B9%E3%82%92%E5%BD%93%E3%81%A6%E3%80%81%E3%82%AB%E3%83%A1%E3%83%A9%E3%81%8B%E3%82%89%E3%81%AE%E7%94%BB%E5%83%8F%E3%82%92%E5%87%A6%E7%90%86%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AB%E3%80%81%E6%9C%80%E3%82%82%E5%8D%98%E7%B4%94%E3%81%AA%E3%83%95%E3%83%A9%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%82%92%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%81%AE%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%AE%E3%81%BF%E3%82%92%E8%89%B2%E4%BB%98%E3%81%91%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%E5%AE%9A%E6%95%B0%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Echar%3C%2FSPAN%3E%20*planefrag_shader_src%20%3D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8C%23ifdef%20GL_FRAGMENT_PRECISION_HIGH%20%5Cn%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%20%E7%B2%BE%E5%AF%86%20Highp%20%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%23else%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%20%E7%B2%BE%E5%AF%86%20mediump%20%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8C%23endif%20%5Cn%E3%80%8D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8C%E3%83%A6%E3%83%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%B3%E3%83%97%E3%83%A9%E3%83%BC2D%20s_texture%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8C%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AAVEC3%20g_vVSColor%E3%80%82%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%80%8C%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AAVEC2%20g_vVSTexCoord%E3%80%82%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22void%20main()%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%7B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%22%20gl_FragColor%20%3D%20texture2D(s_texture%2Cg_vVSTexCoord)%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E(%7D%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012pt%3B%22%3E%3CSTRONG%3E%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E3%83%BB%E3%82%A4%E3%83%A1%E3%83%BC%E3%82%B8%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%9C%80%E3%82%82%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E7%94%BB%E5%83%8F%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%81%AF%E3%83%90%E3%82%A4%E3%83%8A%E3%83%AA%E7%94%BB%E5%83%8F%E3%81%A7%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E3%82%BD%E3%83%BC%E3%82%B9%E7%94%BB%E5%83%8F%E3%82%92%E9%BB%92%2F%E7%99%BD%E5%87%BA%E5%8A%9B%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%97%E3%80%81%E8%89%B2%E3%82%92%E9%BB%92%E3%81%AB%E3%81%99%E3%82%8B%E3%81%8B%E7%99%BD%E3%81%AB%E3%81%99%E3%82%8B%E3%81%8B%E3%82%92%E6%B1%BA%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E3%81%9D%E3%81%AE%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%82%92%E4%B8%8B%E5%9B%9E%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E9%BB%92%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%E3%81%9D%E3%82%8C%E4%BB%A5%E4%B8%8A%E3%81%AE%E8%89%B2%E3%81%AF%E7%99%BD%E3%81%A7%E3%81%82%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fskins%2Fimages%2F0CBF4B305FA47E4E51CF451005BF743F%2Fresponsive_peak%2Fimages%2Fimage_not_found.png%22%20%2F%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%20%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%E5%AE%9A%E6%95%B0%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Echar%3C%2FSPAN%3E*%20g_strRGBtoBlackWhiteShader%20%3D%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%23ifdef%20GL_FRAGMENT_PRECISION_HIGH%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E7%B2%BE%E5%AF%86%E9%AB%98%E6%B5%AE%E5%8B%95%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%23else%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E7%B2%BE%E5%AF%86%E3%83%9F%E3%83%87%E3%82%A3%E3%82%A2%E3%83%A0P%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%23endif%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AAVEC2%20g_vVSTexCoord%E3%80%82%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%83%A6%E3%83%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%B3%E3%83%97%E3%83%A9%E3%83%BC2D%20s_texture%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E5%9D%87%E4%B8%80%E3%81%AA%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%80%82%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Evoid%20main()%20%7B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Evec3%20current_Color%20%3D%20texture2D(s_texture%2Cg_vVSTexCoord).xyz%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E8%BC%9D%E5%BA%A6%3D%E3%83%89%E3%83%83%E3%83%88(vec3(0.299%2C0.587%2C0.114)%E3%80%81current_Color)%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Eif(%E8%BC%9D%E5%BA%A6%26gt%3B%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4)%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gl_FragColor%20%3D%20vec4(1.0)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20lang%3D%22ES-MX%22%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Eelse%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3CSPAN%20lang%3D%22ES-MX%22%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20lang%3D%22ES-MX%22%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20gl_FragColor%20%3D%20vec4(0.0)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%5Cn%22%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%7D%20%5Cn%22%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E4%B8%BB%E3%81%AA%E6%93%8D%E4%BD%9C%E3%81%AF%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%AE%E8%BC%9D%E5%BA%A6%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E3%81%9D%E3%82%8C%E3%82%92%E9%81%94%E6%88%90%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%81%AF%E3%80%81%E6%97%A2%E7%9F%A5%E3%81%AE%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB(%E7%B5%8C%E9%A8%93%E7%9A%84%E3%81%AB%E5%8F%96%E5%BE%97)%E3%81%AB%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%82%92%E6%8E%9B%E3%81%91%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%80%81%E3%81%9D%E3%81%AE%E8%BC%9D%E5%BA%A6%E5%80%A4%E3%82%92%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%81%A8%E6%AF%94%E8%BC%83%E3%81%99%E3%82%8B%E3%81%A0%E3%81%91%E3%81%A7%E3%81%99%E3%80%82%E3%81%9D%E3%81%AE%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%82%92%E4%B8%8B%E5%9B%9E%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E9%BB%92%E3%81%AB%E3%81%AA%E3%82%8A%E3%80%81%E3%81%9D%E3%81%AE%E3%81%97%E3%81%8D%E3%81%84%E5%80%A4%E3%82%92%E8%B6%85%E3%81%88%E3%82%8B%E3%82%82%E3%81%AE%E3%81%AF%E3%81%99%E3%81%B9%E3%81%A6%E7%99%BD%E3%81%84%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%A8%E8%A6%8B%E3%81%AA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2012pt%3B%22%3E%3CSTRONG%3ESOBEL%E3%82%AA%E3%83%9A%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3ESobel%E3%81%AF%E3%80%81%E7%89%B9%E3%81%AB%E3%82%A8%E3%83%83%E3%82%B8%E6%A4%9C%E5%87%BA%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E3%80%81%E5%A4%9A%E3%81%8F%E3%81%AE%E8%A4%87%E9%9B%91%E3%81%AA%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%9F%BA%E7%9B%A4%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E9%9D%9E%E5%B8%B8%E3%81%AB%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%83%BC%E3%81%A7%E3%81%99%E3%80%82%E3%82%BD%E3%83%BC%E3%83%99%E3%83%AB%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AF%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%81%AF%E3%80%81%E3%81%97%E3%81%B0%E3%81%97%E3%81%B0%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%81%A8%E5%91%BC%E3%81%B0%E3%82%8C%E3%82%8B%E7%89%B9%E5%AE%9A%E3%81%AE%E3%83%9E%E3%82%B9%E3%82%AF%E3%81%A7%E3%81%A7%E3%81%8D%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99(%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%A0%E3%81%A7%E3%81%AF%E3%80%81%E9%80%9A%E5%B8%B8%E3%81%AF3x3%E8%A1%8C%E5%88%97)%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%BD%E3%83%BC%E3%83%99%E3%83%AB%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AF%E3%80%81%E5%90%84%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%A7%E3%81%AE%E7%94%BB%E5%83%8F%E3%81%AE%E3%82%B0%E3%83%A9%E3%83%87%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%A8%88%E7%AE%97%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E7%8F%BE%E5%9C%A8%E3%81%AE%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%82%92%E5%9B%B2%E3%82%80%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%8B%E3%82%89%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%A4%89%E5%8C%96%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81%E3%81%A4%E3%81%BE%E3%82%8A%E3%80%81%E7%94%BB%E5%83%8F%E3%81%8C%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%A2%97%E5%8A%A0%E3%81%BE%E3%81%9F%E3%81%AF%E6%B8%9B%E5%B0%91%E3%81%99%E3%82%8B%E3%81%8B(%E6%9A%97%E3%81%84%E5%80%A4%E3%81%8B%E3%82%89%E6%98%8E%E3%82%8B%E3%81%84%E5%80%A4%E3%81%B8)%E3%82%92%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%3E%3CIMG%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fskins%2Fimages%2F0CBF4B305FA47E4E51CF451005BF743F%2Fresponsive_peak%2Fimages%2Fimage_not_found.png%22%20%2F%3E%3C%2FSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AF%E5%B0%91%E3%81%97%E9%95%B7%E3%81%84%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E3%81%AE%E6%93%8D%E4%BD%9C%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%A7%E5%90%84%E9%83%A8%E5%88%86%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9A%E3%80%81%E9%A0%82%E7%82%B9%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%8B%E3%82%89%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E5%BA%A7%E6%A8%99%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20blue%3B%20font-size%3A%2010pt%3B%22%3E%E5%AE%9A%E6%95%B0%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%20%3CSPAN%20style%3D%22color%3A%20blue%3B%22%3Echar%3C%2FSPAN%3E*%20plane_sobel_filter_shader_src%20%3D%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%23ifdef%20GL_FRAGMENT_PRECISION_HIGH%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E7%B2%BE%E5%AF%86%E9%AB%98%E6%B5%AE%E5%8B%95%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%23else%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E7%B2%BE%E5%AF%86%E3%83%9F%E3%83%87%E3%82%A3%E3%82%A2%E3%83%A0P%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%23endif%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AAVEC2%20g_vVSTexCoord%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%A6%E3%83%8B%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%82%B5%E3%83%B3%E3%83%97%E3%83%A9%E3%83%BC2D%20s_texture%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81%E5%89%8D%E8%BF%B0%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8C%E3%80%813x3%E8%A1%8C%E5%88%97%E3%81%A7%E5%8D%81%E5%88%86%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E6%AC%A1%E3%81%AE%E5%80%A4%E3%81%8C%E3%83%86%E3%82%B9%E3%83%88%E3%81%95%E3%82%8C%E3%80%81%E8%89%AF%E5%A5%BD%E3%81%AA%E7%B5%90%E6%9E%9C%E3%81%8C%E5%BE%97%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Emat3%20kernel1%20%3D%20mat3%20(-1.0%2C%20-2.0%2C%20-1.0%2C%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E0.0%2C%200.0%2C%200.0%2C%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%201.0%2C%202.0%2C%201.0)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%BE%E3%81%9F%E3%80%81Sobel%E6%BC%94%E7%AE%97%E5%AD%90%E3%81%AE%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E6%83%85%E5%A0%B1%E3%81%AE%E3%81%BF%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E3%81%9F%E3%82%81%E3%80%81%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E4%BE%BF%E5%88%A9%E3%81%AA%E6%96%B9%E6%B3%95%E3%82%82%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF3%E3%81%A4%E3%81%AE%E8%89%B2%E3%81%AE%E5%B9%B3%E5%9D%87%E3%81%AE%E3%81%BF%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E8%A6%9A%E3%81%88%E3%81%A6%E3%81%8A%E3%81%84%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88to%E3%82%B0%E3%83%AC%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB(vec3%E3%82%BD%E3%83%BC%E3%82%B9)%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E6%B5%AE%E5%8B%95%E5%B0%8F%E6%95%B0%E7%82%B9%E6%95%B0%E5%B9%B3%E5%9D%87%20%3D%20(source.x%2Bsource.y%2Bsource.z)%2F3.0%3B%20%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%E3%83%AA%E3%82%BF%E3%83%BC%E3%83%B3%E5%B9%B3%E5%9D%87%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E6%AC%A1%E3%81%AB%E3%80%81%E9%87%8D%E8%A6%81%E3%81%AA%E9%83%A8%E5%88%86%E3%81%AB%E9%80%B2%E3%81%BF%E3%80%81%E5%AE%9F%E9%9A%9B%E3%81%AB%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82OpenGL%20ES%202.0%E4%BB%95%E6%A7%98%E3%81%A7%E3%81%AF%E3%80%81%E5%86%8D%E5%B8%B0%E3%82%82%E5%8B%95%E7%9A%84%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%82%82%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%80%81%E3%83%99%E3%82%AF%E3%83%88%E3%83%AB%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%A6%E3%81%9D%E3%82%8C%E3%82%89%E3%82%92%E4%B9%97%E7%AE%97%E3%81%99%E3%82%8B%E3%81%A8%E3%81%84%E3%81%86%E9%9B%A3%E3%81%97%E3%81%84%E6%96%B9%E6%B3%95%E3%81%A7%E6%93%8D%E4%BD%9C%E3%82%92%E8%A1%8C%E3%81%86%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E5%BF%98%E3%82%8C%E3%81%AA%E3%81%84%E3%81%A7%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%E6%AC%A1%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Efloat%20doConvolution(mat3%E3%82%AB%E3%83%BC%E3%83%8D%E3%83%AB)%20%7B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%E5%90%88%E8%A8%88%20%3D%200.0%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Efloat%20current_pixelColor%20%3D%20toGrayscale(texture2D(s_texture%2Cg_vVSTexCoord).xyz)%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20xOffset%20%3D%20float(1)%2F1024.0%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%20yOffset%20%3D%20float(1)%2F768.0%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel00%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x-xOffset%2Cg_vVSTexCoord.y-yOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel01%20%3D%20toGrayscale(texture2D(s_texture%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec2(g_vVSTexCoord.x%2Cg_vVSTexCoord.y-yOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel02%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x%2BxOffset%2Cg_vVSTexCoord.y-yOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20pixelRow0%20%3D%20vec3(new_pixel00%2Cnew_pixel01%2Cnew_pixel02)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel10%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x-xOffset%2Cg_vVSTexCoord.y)).xyz)%3B%5Cn%22%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel11%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x%2Cg_vVSTexCoord.y)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel12%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x%2BxOffset%2Cg_vVSTexCoord.y)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20pixelRow1%20%3D%20vec3(new_pixel10%2Cnew_pixel11%2Cnew_pixel12)%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel20%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x-xOffset%2Cg_vVSTexCoord.y%2ByOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel21%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x%2Cg_vVSTexCoord.y%2ByOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Efloat%20new_pixel22%20%3D%20toGrayscale(texture2D(s_texture%2C%20vec2(g_vVSTexCoord.x%2BxOffset%2Cg_vVSTexCoord.y%2ByOffset)).xyz)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20pixelRow2%20%3D%20vec3(new_pixel20%2Cnew_pixel21%2Cnew_pixel22)%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20mult1%20%3D%20(kernel%5B0%5D*pixelRow0)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20mult2%20%3D%20(kernel%5B1%5D*pixelRow1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evec3%20mult3%20%3D%20(kernel%5B2%5D*pixelRow2)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Esum%3D%20mult1.x%2Bmult1.y%2Bmult1.z%2Bmult2.x%2Bmult2.y%2Bmult2.z%2Bmult3.x%2B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20lang%3D%22ES-MX%22%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Emult3.y%2Bmult3.z%3B%5Cn%22%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E5%90%88%E8%A8%88%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%E9%96%A2%E6%95%B0%E3%81%AE%E6%9C%80%E5%BE%8C%E3%81%AE%E9%83%A8%E5%88%86%E3%82%92%E8%A6%8B%E3%82%8B%E3%81%A8%E3%80%81%E4%B9%97%E7%AE%97%E5%80%A4%E3%82%92%E5%90%88%E8%A8%88%E3%81%AB%E8%BF%BD%E5%8A%A0%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B0%97%E4%BB%98%E3%81%8F%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%80%81%E3%81%93%E3%81%AE%E5%90%88%E8%A8%88%E3%81%A7%E3%81%AF%E3%80%81%E9%9A%A3%E6%8E%A5%E3%81%99%E3%82%8B%E5%90%84%E3%83%94%E3%82%AF%E3%82%BB%E3%83%AB%E3%81%AE%E5%A4%89%E5%8B%95%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E6%9C%80%E5%BE%8C%E3%81%AE%E9%83%A8%E5%88%86%E3%81%AF%E3%80%81%E4%BB%A5%E5%89%8D%E3%81%AE%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E9%96%A2%E6%95%B0%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E5%A0%B4%E6%89%80%E3%81%A7%E3%81%99%E3%81%8C%E3%80%81%E3%81%93%E3%81%AE%E6%89%8B%E6%B3%95%E3%82%92%E5%AE%8C%E6%88%90%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E7%95%B3%E3%81%BF%E8%BE%BC%E3%81%BF%E3%82%92%E6%B0%B4%E5%B9%B3%E6%96%B9%E5%90%91%E3%81%A8%E5%9E%82%E7%9B%B4%E6%96%B9%E5%90%91%E3%81%AB%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B3%A8%E6%84%8F%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Evoid%20main()%20%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20float%20horizontalSum%20%3D%200.0%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88verticalSum%20%3D%200.0%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E3%83%95%E3%83%AD%E3%83%BC%E3%83%88%20averageSum%20%3D%200.0%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20horizontalSum%20%3D%20doConvolution(kernel1)%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3EverticalSum%20%3D%20doConvolution(kernel2)%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3Eif(%20(verticalSum%20%26gt%3B%200.2)%7C%7C(horizontalSum%20%26gt%3B0.2)%7C%7C(verticalSum%26lt%3B%20-0.2)%7C%7C(horizontalSum%20%26lt%3B-0.2))%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E5%B9%B3%E5%9D%87%E5%90%88%E8%A8%88%20%3D%200.0%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20else%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20color%3A%20%23a31515%3B%20font-size%3A%2010pt%3B%22%3E%E5%B9%B3%E5%9D%87%E5%90%88%E8%A8%88%20%3D%201.0%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3Egl_FragColor%20%3D%20vec4(%E5%B9%B3%E5%9D%87%E5%90%88%E8%A8%88%2C%E5%B9%B3%E5%9D%87%E5%90%88%E8%A8%88%2C%E5%B9%B3%E5%9D%87%E5%90%88%E8%A8%88%2C1.0)%3B%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20font-size%3A%2010pt%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3CSPAN%20style%3D%22color%3A%20%23a31515%3B%22%3E%7D%20%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2014pt%3B%22%3E%3CSTRONG%3E%E7%B5%90%E8%AB%96%E3%81%A8%E4%BB%8A%E5%BE%8C%E3%81%AE%E7%A0%94%E7%A9%B6%3C%2FSTRONG%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%81%AE%E6%99%82%E7%82%B9%E3%81%A7%E3%80%81%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81640%20480%20%E3%82%88%E3%82%8A%E5%A4%A7%E3%81%8D%E3%81%84%E7%94%BB%E5%83%8F%E3%81%A7%E3%82%82%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%E3%82%92%E9%9D%9E%E5%B8%B8%E3%81%AB%E9%AB%98%E9%80%9F%E3%81%AB%E5%AE%9F%E8%A1%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E6%B0%97%E4%BB%98%E3%81%8F%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%80%82%E3%81%93%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AD%E3%83%BC%E3%83%81%E3%81%AF%E3%80%81%E3%83%88%E3%83%A9%E3%83%83%E3%82%AD%E3%83%B3%E3%82%B0%E3%80%81%E7%89%B9%E5%BE%B4%E6%A4%9C%E5%87%BA%E3%80%81%E9%A1%94%E6%A4%9C%E5%87%BA%E3%81%AA%E3%81%A9%E3%81%AE%E3%81%95%E3%81%BE%E3%81%96%E3%81%BE%E3%81%AA%E6%89%8B%E6%B3%95%E3%81%AB%E6%8B%A1%E5%BC%B5%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81%E3%81%93%E3%81%AE%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AB%E3%81%AF%E8%A4%87%E6%95%B0%E3%81%AE%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%20%E3%83%91%E3%82%B9%20(%E9%A1%94%E6%A4%9C%E5%87%BA%E3%81%AA%E3%81%A9)%20%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%A7%E3%81%82%E3%82%8A%E3%80%81%E6%93%8D%E4%BD%9C%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%97%E3%81%A6%E3%81%8B%E3%82%89%E7%B5%90%E6%9E%9C%E3%82%92%E3%82%AA%E3%83%95%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%81%BF%E3%80%81%E3%81%9D%E3%81%AE%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%83%BC%E3%82%92%E6%AC%A1%E3%81%AE%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC%E3%81%AE%E5%85%A5%E5%8A%9B%E3%81%A8%E3%81%97%E3%81%A6%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E6%89%8B%E6%B3%95%E3%81%AF%E7%8F%BE%E6%99%82%E7%82%B9%E3%81%A7%E3%81%AF%E7%AF%84%E5%9B%B2%E5%A4%96%E3%81%A7%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%83%95%E3%83%AA%E3%83%BC%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E3%83%9B%E3%83%AF%E3%82%A4%E3%83%88%E3%83%9A%E3%83%BC%E3%83%91%E3%83%BC%E3%82%92%E6%8B%A1%E5%BC%B5%E3%81%97%E3%80%81%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%E6%89%8B%E6%B3%95%E3%82%92%E8%A9%B3%E7%B4%B0%E3%81%AB%E8%AA%AC%E6%98%8E%E3%81%99%E3%82%8B%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%8E%E3%83%BC%E3%83%88%E3%82%922012%E5%B9%B4%E7%AC%AC4%E5%9B%9B%E5%8D%8A%E6%9C%9F%E3%81%AB%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9%E3%81%99%E3%82%8B%E4%BA%88%E5%AE%9A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1108479%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3Ei.MX6_All%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3ELinux%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1108481%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3Ai.MX%206x%E3%81%A7%E3%81%AE%E9%AB%98%E9%80%9FGPU%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1108481%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3EHi%2C%20%3CA%20class%3D%22jx-jive-macro-user%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fpeople%2Fjodipaul%22%20target%3D%22_blank%22%3Ejodipaul%3C%2FA%3E%E2%80%8C%3C%2FP%3E%3CP%3E%E5%AE%8C%E5%85%A8%E3%81%AA%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1108480%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3Ai.MX%206x%E3%81%A7%E3%81%AE%E9%AB%98%E9%80%9FGPU%E7%94%BB%E5%83%8F%E5%87%A6%E7%90%86%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1108480%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E7%94%BB%E5%83%8F%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AB%20OpenCV%20%E3%81%AE%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%20GStreamer%20(v4l2src%20%E3%81%BE%E3%81%9F%E3%81%AF%20mfw_v4lsrc)%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E8%AA%BF%E6%9F%BB%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AB%E3%82%88%E3%82%8A%E3%80%81Oneiric%20rootfs%E3%81%AE%E3%82%B9%E3%83%86%E3%83%83%E3%83%97%E3%82%92%E5%AE%9F%E8%A1%8C%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E6%89%8B%E9%A0%865%E3%81%AE%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%82%92%E5%90%91%E4%B8%8A%E3%81%95%E3%81%9B%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%81%93%E3%81%AE%E6%8A%95%E7%A8%BF%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82%3CSPAN%20style%3D%22font-family%3A%20'Courier%20New'%3B%20background-color%3A%20%23ffffff%3B%22%3EglTexImage2D%3C%2FSPAN%3E%20%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%81%AF%E3%81%8B%E3%81%AA%E3%82%8A%E4%BD%8E%E9%80%9F%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3CA%20href%3D%22http%3A%2F%2Fwww.imxcv.blogspot.com%2F2012%2F10%2Fvideo-to-texture-streaming-part-3-imx6.html%22%20title%3D%22http%3A%2F%2Fwww.imxcv.blogspot.com%2F2012%2F10%2Fvideo-to-texture-streaming-part-3-imx6.html%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ei.MX%20%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%E4%B8%8A%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%83%93%E3%82%B8%E3%83%A7%E3%83%B3%3A%E3%83%93%E3%83%87%E3%82%AA%E3%81%8B%E3%82%89%E3%83%86%E3%82%AF%E3%82%B9%E3%83%81%E3%83%A3%E3%81%B8%E3%81%AE%E3%82%B9%E3%83%88%E3%83%AA%E3%83%BC%E3%83%9F%E3%83%B3%E3%82%B0(%E3%83%91%E3%83%BC%E3%83%883)%20-%20i.MX6%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5%3C%2FA%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E
評価なし
バージョン履歴
最終更新日:
‎09-26-2012 12:19 PM
更新者: