标签: opengl-es

iPhone - OpenGL ES 1.1 - Alpha Blend使纹理颜色错误

我是OpenGL ES 1.1 for iPhone的新手.今天,我尝试在黑色背景上绘制png纹理(纹理包含alpha chanel),但结果与源png文件不同.

iPhone和模拟器上的结果:

在此输入图像描述

关灯:

在此输入图像描述

这应该是(更明亮,更模糊):

在此输入图像描述

源纹理文件:

在此输入图像描述

这是我使用的源代码:

//Setup:
glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);
glAlphaFunc(GL_GREATER,0.01);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
static const GLfloat light0Ambient[] = {1.0, 1.0, 1.0, 1.0};
static const GLfloat light0Diffuse[] = {1.0, 1.0, 1.0, 1.0};
static const GLfloat light0Position[] = {0.0, 0.0, 10.0};
glLightfv(GL_LIGHT0, GL_AMBIENT, (const GLfloat *)light0Ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, (const GLfloat *)light0Diffuse);
glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position);
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
Run Code Online (Sandbox Code Playgroud)

绘图代码:

glBindTexture(GL_TEXTURE_2D, OYTextID);
glVertexPointer(3, GL_FLOAT, 0, GUI_Vertices);
glNormalPointer(GL_FLOAT, 0, GUI_Normals);
glTexCoordPointer(2, GL_FLOAT, 0, GUI_TexCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); …
Run Code Online (Sandbox Code Playgroud)

iphone textures alpha blend opengl-es

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

像Android中的信用卡一样3D旋转

我需要提供一些3D旋转图像,如信用卡(请查看链接中的视频)

在Android的情况下,我想知道它是否可行.如果是的话,我该怎么办呢.

卡必须有一些厚度.

android opengl-es

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

使用XCODE 4.2在iOS 5.0编译中出现Libpng错误

当我尝试加载三角形时,我收到下一个错误:

Mesh_Mesh_Box001.001: 35: GL_TRIANGLE_STRIP libpng error: CgBI: unknown critical chunk

但这适用于另一个例子.

到底是怎么回事?

提前致谢.

opengl-es objective-c ios

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

for opengl(webgl)是png还是jpeg最合适的文件格式?

在opengl(更具体地说是webgl)的纹理上,建议在jpeg和png之间格式化,以便在运行时渲染时更高效?我知道jpeg可能比PNG小,但也许解码可能更昂贵,或者其他.

format opengl-es image-formats webgl

1
推荐指数
2
解决办法
1946
查看次数

找不到gl.h和glext.h

尝试通过NDK平台在android中执行基于C ++的程序时,编译出现错误,发现未找到'gl.h'和'glext.h'头文件,因为我在C ++代码中都包含了这两个文件。M使用android-ndk-r8并使用Cygwin进行编译。

here s my code:   
**ANDROID.MK**

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := NDK1
FILE_LIST := $(wildcard $(LOCAL_PATH)/*.cpp) 
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%) 

include $(BUILD_SHARED_LIBRARY)

---
**APPLICATION.MK**

APP_STL := stlport_static
APP_ABI := armeabi armeabi-v7a 
APP_PLATFORM := android-3

---
**Viewer.cpp**

#include <iostream>

#import "OpenGLES/ES2/gl.h"
#import "OpenGLES/ES2/glext.h"

//#import <GLKit/GLKEffects.h>
#import <GLKit/GLKMath.h>

#include "Viewer.h"

void Viewer::render() {
    glClearColor(0.65f, 0.65f, 0.65f, 1.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glBindVertexArrayOES( _vertexArray[0]);

    // Render the object with GLKit


    glDrawArrays(GL_TRIANGLES, 0, 36);

    /////////
    glBindVertexArrayOES(_vertexArray[1]);

    // Render the object with …
Run Code Online (Sandbox Code Playgroud)

java-native-interface opengl-es android-ndk

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

如何在UIView中绘制opengl

我想在自定义的UIView中绘制我的opengl动画,我该怎么做.我发现我需要覆盖drawRect方法.这是在下面.

#import "myView.h"

@implementation myView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    // Initialization code
    }
    return self;
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

@end
Run Code Online (Sandbox Code Playgroud)

我使用界面构建器绘制了一个View,如何链接到该视图并绘制(调用)我的opengl动画类.任何人都可以写一点具体的.我是初学者.谢谢.

core-animation opengl-es uiview drawrect ios

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

如何在OpenGL Android中镜像纹理位图?

当我将纹理应用于形状时,我一直看到它被镜像.GLU.gluLookAt设置为5个单位,因此它是GLU.gluLookAt(gl,0,0,5,0,0,0,0,2,0);. 如果下降5个单位,则x轴将反转,这将是一个更大的问题.

你能告诉我如何将正在加载的位图镜像为纹理吗?我想保持轴的位置和绘制形状的方式,我只想自动镜像位图.

你能告诉我怎么做吗?也许给我一个代码序列来反映x轴上的位图?

android textures opengl-es bitmap mirror

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

如何使用OpenGL为UIImageView/uiview提供3D效果看起来像3D立方体

我是OpenGL的新手,对此并不了解.我想添加一个3D效果UIImageView.如何使用OpenGL实现这一目标?我想做一些像这张图片中看到的东西:在此输入图像描述

我搜索过并发现可以使用OpenGL.我已经用OpenGL 引用了这个链接.我创建了一个立方体,并取得了一些效果

glDrawElements(GL_TRIANGLES, sizeof(Indices)/sizeof(Indices[0]), GL_UNSIGNED_BYTE, 0);
Run Code Online (Sandbox Code Playgroud)

但是我用glDrawRangeElements来了解我们可以创建一个3d立方体,但是我不知道如何实现它.

编辑

这是我的代码显示ther vertext和索引数组

const Vertex Vertices [] = {

// Front
{{1, -1, 1}, {1, 0, 0, 1}, {1, 0}},
{{1, 1, 1}, {0, 1, 0, 1}, {1, 1}},
{{-1, 1, 1}, {0, 0, 1, 1}, {0, 1}},
{{-1, -1, 1}, {0, 0, 0, 1}, {0, 0}},

// Back
{{1, 1, -1}, {1, 0, 0, 1}, {0, 1}},
{{-1, -1, -1}, {0, …
Run Code Online (Sandbox Code Playgroud)

iphone opengl-es core-graphics uiimageview

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

使用glDrawArrays,iOS在OpenGL纹理中损坏

我正在开发iOS游戏,我使用glDrawArrays(使用cocos2D v1.0.1,使用OpenGL ES 1.1)在纹理方面遇到了一些麻烦.我首先创建一个CGPoints数组,定义一个山的顶部和底部,以及一个纹理坐标数组:

hillVertices[nHillVertices] = CGPointMake((topLeftVertexX)*CC_CONTENT_SCALE_FACTOR(), topLeftVertexY*CC_CONTENT_SCALE_FACTOR());
hillTexCoords[nHillVertices] = CGPointMake((topLeftVertexX)/textureSize.width, 0.0);
nHillVerticies++;
hillVertices[nHillVertices] = CGPointMake((bottomLeftVertexX)*CC_CONTENT_SCALE_FACTOR(), bottomLeftVertexY*CC_CONTENT_SCALE_FACTOR());
hillTexCoords[nHillVertices] = CGPointMake(topLeftVertexX)/textureSize.width, 1.0);
nHillVerticies++;
Run Code Online (Sandbox Code Playgroud)

然后用...画画

glBindTexture(GL_TEXTURE_2D, groundSprite.texture.name);
glVertexPointer(2, GL_FLOAT, 0, hillVertices);
glTexCoordPointer(2, GL_FLOAT, 0, hillTexCoords);
glDrawArrays(GL_TRIANGLE_STRIP, 0, (nHillVertices-1));
Run Code Online (Sandbox Code Playgroud)

在游戏开始时(当"topLeftVertexX"值很小时),山丘看起来很好...... 小x偏移的山丘

但随着游戏的继续,x偏移值(topLeftVertexX)增加,事情开始恶化...... 中间x偏移

接近尾声,它变坏了...... x偏移大

我认为问题是在游戏开始时,"topLeftVertexX"值很小,所以结果是

(topLeftVertexX)/textureSize.width
Run Code Online (Sandbox Code Playgroud)

hillTexCoords[nHillVertices] = CGPointMake((topLeftVertexX)/textureSize.width, 0.0);
Run Code Online (Sandbox Code Playgroud)

是小.然而,随着游戏的继续和x值的增加,我认为价值变得越来越大,导致某种腐败.textureSize为512x512,"topLeftVertexX"在游戏开始时从0开始,最高可达200​​,000.

我已经尝试增加三角形的数量(包括添加额外的条带),但这没有用.我也试过使用@jpsarda的CCSpriteBiCurve类,得到了相同的结果.我也尝试使用glHints(例如GL_LINE_SMOOTH_HINT和GL_NICEST),但我没有发现任何有用的东西.

我有什么想法可以解决这个问题吗?

textures opengl-es cocos2d-iphone ios

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

某些设备上没有显示OpenGL ES 2.0纹理

我找到了一个名为Rajawali的 Android 3D图形框架,我正在学习如何使用它.我遵循了最基本的教程,该教程使用1024x512大小的jpg图像渲染一个shpere对象.它在Galaxy Nexus上运行良好,但它在Galaxy Player GB70上无效.

当我说它不起作用时,我的意思是对象出现但纹理没有渲染.最后,在创建纹理并使其工作时,我更改了一些用于Rajawali框架的参数.这是我发现的.

原因来自于GL_TEXTURE_MIN_FILTER设定的地方.在以下四个值中

GLES20.GL_LINEAR_MIPMAP_LINEAR
GLES20.GL_NEAREST_MIPMAP_NEAREST
GLES20.GL_LINEAR
GLES20.GL_NEAREST
Run Code Online (Sandbox Code Playgroud)

仅当GL_TEXTURE_MIN_FILTER未使用mipmap将过滤器设置为过滤器时,才会呈现纹理.因此,当GL_TEXTURE_MIN_FILTER设置为最后两个时,它可以工作.

现在这是我不理解和好奇的.当我将我正在使用的图像缩小为512x512的纹理时,GL_TEXTURE_MIN_FILTER设置无关紧要.min过滤器的所有四个设置都有效.

所以我的问题是,对纹理使用最小滤镜时是否需要图像的尺寸?比如我需要使用方形图像吗?包装样式或磁过滤器的配置等其他问题可以解决吗?

或者它看起来像是设备的OpenGL实现错误?

android textures opengl-es opengl-es-2.0 galaxy

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