Tag: 纹理

如何在openGL中使用纹理图像加载和填充立方体

我有一个带有立方体的网格,我想用两种不同的颜色和3种不同的图像(.bmp)填充立方体。 所以每个立方体都充满了颜色或图像。 我写了一个代码,当我按下按钮时,网格中充满了5种不同的颜色。 任何人都可以告诉我如何更改我的代码以3个不同的图像(随机)填充网格? 这是我的代码: void randomFilling(); void myprint(); struct square{ int v1x, v1y; int v2x, v2y; int v3x, v3y; int v4x, v4y; int color; }; struct square Squares[12][15]; struct flags{ int b; }flags; void drawScene(); void findVerticesPosition(){ int counter=0; for(int i=0; i<600; i+=40){ for(int j=0; j<480; j+=40){ Squares[j/40][i/40].v1x = i; Squares[j/40][i/40].v1y = j; Squares[j/40][i/40].v2x […]

如何检测openGL /卡是否支持2的非功率?

检测图形卡和已编译的openGL二进制文件是否支持在运行时不是2的幂的纹理的最佳方法是什么?

Cuda从设备存储器创建3d纹理和cudaArray(3d)

我试图从设备arrays的一部分创建纹理3d。 要做到这一点,这些是我的步骤: malloc设备arrays 写设备arrays 创建CudaArray(3D) 将纹理绑定到CudaArray 我这样做的方式不会产生编译器错误,但是当我运行cuda-memcheck时,当我试图从纹理中获取数据时,它失败了。 无效的全局读取大小为8 ..地址0x10dfaf3a0超出范围 这就是为什么我猜我宣布纹理数组错了。 这是我如何访问纹理: tex3D(NoiseTextures [I]中,X,Y,Z) 我正在做上述步骤的方式: 1.Malloc设备arrays cudaMalloc((void **)&d_Noise, sqrSizeNoise*nNoise*sizeof(float)); 2.编写设备arrays curandCreateGenerator(&gen,CURAND_RNG_PSEUDO_DEFAULT); curandSetPseudoRandomGeneratorSeed(gen,Seed); curandGenerateUniform(gen, d_Noise, sqrSizeNoise*nNoise); curandDestroyGenerator(gen); 3 + 4.创建Cudaarrays并将其绑定到纹理(我猜错了就在这里) cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc();//cudaCreateChannelDesc(32, 0, 0, 0, cudaChannelFormatKindFloat); cudaArray *d_cuArr; cudaMalloc3DArray(&d_cuArr, &channelDesc, make_cudaExtent(SizeNoise,SizeNoise,SizeNoise), 0); cudaMemcpy3DParms copyParams = {0}; //Loop for every separated Noise Texture (nNoise = 4) […]

如何在保持纹理坐标正确的同时使用glDrawElements?

我正在使用/目标OpenGL 4.20,GSLSL 4.20,核心。 使用C. 我正在使用OpenGL探索图形,并决定制作基于图块的游戏。 我正在想要实际绘制一堆瓷砖,我正在尝试使用glDrawElements绘制单个三角形。 相关代码: const float vertexPositions[] = { -1.0f, -0.8f, //0 -0.8f, -0.8f, //1 -0.6f, -0.8f, //2 -0.4f, -0.8f, //3 -0.2f, -0.8f, //4 0.0f, -0.8f, //5 -1.0f, -1.0f, //6 -0.8f, -1.0f, //7 -0.6f, -1.0f, //8 -0.4f, -1.0f, //9 -0.2f, -1.0f, //10 0.0f, -1.0f, //11 //The following are the texture coordinates. 0.00f, […]

如何在opengl / SDL中使用ARGB颜色?

我正在使用Cairo渲染SVG。 开罗输出格式是ARGB。 然后我将渲染图像放在SDL_Surface中,这样我就可以将它用作openGL纹理。 当我直接使用SDL_Surface时,渲染的图像看起来很好。 但是我不得不在openGL中使用表面作为纹理,因为我需要一些openGL函数。 问题是,所有的颜色都被翻转了。 OpenGL使用RGBA而不是ARGB。 我想知道是否有人可以帮助我将SDL_Surface ARGB转换为RGBA。 有用的信息: 我用这个教程来渲染我的SVG。 http://tuxpaint.org/presentations/sdl_svg_svgopen2009_kendrick.pdf 我的软件是用C编写的。 编辑:我使用本教程将SDL_Surface用作openGL纹理。 http://www.sdltutorials.com/sdl-tip-sdl-surface-to-opengl-texture 渲染过程和opengl纹理都与教程相同。