我正在学习使用AndEngine的opengl着色器,我的目标是使DynamicSpriteBatch具有一些灯光,光线位置将通过vbo传递到spritebatch中的每个绘制调用,这样我就可以在每个sprite上操作光源.
所以我创建了LightSpriteBatch(使用drawtype.dynamic)
public class LightSpriteBatch extends Shape {
// ===========================================================
// Constants
// ===========================================================
private static final float[] VERTICES_TMP = new float[8];
private static final Transformation TRANSFORATION_TMP = new Transformation();
public static final int VERTEX_INDEX_X = 0;
public static final int VERTEX_INDEX_Y = 1;
public static final int COLOR_INDEX = 2;
public static final int TEXTURECOORDINATES_INDEX_U = 3;
public static final int TEXTURECOORDINATES_INDEX_V = 4;
public static final int LIGHT_POSITION_INDEX_X = 5;
public static final int LIGHT_POSITION_INDEX_Y = 6
; …
Run Code Online (Sandbox Code Playgroud) 我开发了一款由很多人玩的Android游戏.100-200中的一个用户面临一个我无法理解的异常.
我使用RenderTexture,当我尝试初始化时抛出以下异常:
Fatal Exception: org.andengine.opengl.exception.RenderTextureInitializationException
org.andengine.opengl.exception.GLFrameBufferException: GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT
Run Code Online (Sandbox Code Playgroud)
它适用于所有设备的99%.init方法如下所示:
public void init(final GLState pGLState) throws GLFrameBufferException, GLException {
this.savePreviousFramebufferObjectID(pGLState);
try {
this.loadToHardware(pGLState);
} catch (final IOException e) {
/* Can not happen. */
}
/* The texture to render to must not be bound. */
pGLState.bindTexture(0);
/* Generate FBO. */
this.mFramebufferObjectID = pGLState.generateFramebuffer();
pGLState.bindFramebuffer(this.mFramebufferObjectID);
/* Attach texture to FBO. */
GLES20.glFramebufferTexture2D(GLES20.GL_FRAMEBUFFER, GLES20.GL_COLOR_ATTACHMENT0, GLES20.GL_TEXTURE_2D, this.mHardwareTextureID, 0);
try {
pGLState.checkFramebufferStatus();
} catch (final GLException e) {
this.destroy(pGLState);
throw new RenderTextureInitializationException(e);
} …
Run Code Online (Sandbox Code Playgroud) 什么是应该在发动机中使用的最大纹理尺寸.我用了
this.diamondTexture = new Texture(2048, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
Run Code Online (Sandbox Code Playgroud)
在设备(HTC G1 T-Mobile)中加载时,显示空白屏幕.减小图像尺寸后用此替换上面的线条
this.diamondTexture = new Texture(1024, 512, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
Run Code Online (Sandbox Code Playgroud)
它的运行.有什么问题 ?
我试图在与传送接触时移动玩家身体但是没有执行setTransform.这是我的联系人听众
mPhysicsWorld.setContactListener(new ContactListener()
{
@Override
public void beginContact(Contact contact)
{
final Fixture fixtureA = contact.getFixtureA();
final Body bodyA = fixtureA.getBody();
final Fixture fixtureB = contact.getFixtureB();
final Body bodyB = fixtureB.getBody();
if(bodyA.getUserData().equals("Player") || bodyB.getUserData().equals("Player") )
{
for(int i = 0; i < telList.size(); i++)
{
if(bodyA.getUserData() == telList.get(i))
{
Teleport tl = telList.get(i);
if(tl.look.getX() > pl.look.getX())
{
pl.moveTo(150, 320);
pl.setLinearVelocity(new Vector2(-4.5f,0));
}else
{
pl.moveTo(150, 320);
pl.setLinearVelocity(new Vector2(4.5f,0));
}
break;
}else if(bodyB.getUserData() == telList.get(i))
{
Teleport tl = telList.get(i);
if(tl.look.getX() > pl.look.getX()) …
Run Code Online (Sandbox Code Playgroud) 我试图在AndEngine中使用Greystrip显示广告.
我无法弄清楚这是如何完成的,因为它不使用布局来扩充视图,但是精灵.
我使用BaseGameActivity为我想要显示的每个场景创建我的应用程序.
在GreyStrip中,这是他们告诉您在应用程序中集成广告的方式.
在将应用程序中的调用添加到GSSDK之前,需要将SDK合并到AndroidManifest.xml中.在该部分中添加以下内容,替换为应用程序特有的包标识符.此内容提供商管理广告内容的本地存储,而活动管理广告显示.
<provider android:name="com.greystripe.android.sdk.AdContentProvider"
android:authorities="<YOUR_APPLICATION_PACKAGE>.AdContentProvider"
android:multiprocess="true"
android:exported="false" />
<activity android:name="com.greystripe.android.sdk.AdView"
android:configChanges="keyboard|keyboardHidden|orientation" >
<intent-filter>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
要初始化Greystripe SDK,请在启动时调用initialize方法.这应该在您的应用程序的onCreate()方法中完成.此调用将生成一个后台线程来初始化我们的活动,然后将控制权返回给您的应用程序.在此背景下,Greystripe活动将下载广告以及任何SDK更新.参数:ctx:您的应用程序上下文实例appId:使用应用程序注册期间提供的appId.提供无效的appId会导致SDK显示错误通知广告.
public static GSSDK initialize(Context ctx, String appId)
Run Code Online (Sandbox Code Playgroud)
要使用横幅,请将以下内容放在main.xml文件中:
<view class="com.greystripe.android.sdk.BannerView"
android:id="@+id/gsBanner"
android:layout_width="320dp"
android:layout_height="48dp"/>
Run Code Online (Sandbox Code Playgroud)
要在代码中引用标题视图,请使用findViewById,与任何main.xml元素一样:
BannerView myBanner = (BannerView) findViewById(R.id.gsBanner);
Run Code Online (Sandbox Code Playgroud)
要求添加电话
myBanner.refresh();
Run Code Online (Sandbox Code Playgroud)
现在的问题是因为我没有xml布局我无法弄清楚我如何为广告视图的布局充气?
有人有主意吗?
编辑:
我见过有人在网上教程中这样做,但我怎样才能在andengine中充气呢?
try {
String applicationId = Utils.scrapeIgnoreCase(externalParams, "<param name=\"id\">", "</param>");
GSSDK.initialize(context, applicationId);
BannerView myBanner = new BannerView(context);
myBanner.setLayoutParams(view.getLayoutParams());
myBanner.addListener(new GreyStripeBannerListener());
view.addView(myBanner);
myBanner.refresh();
myBanner.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Click();
} …
Run Code Online (Sandbox Code Playgroud) 我想用Tiled Map Editor制作游戏,我想用D-Pad移动角色来移动角色
所以我想知道哪个引擎会更好AndEngine或Cocos2d
请记住,我是初学者,所以我想盯着很多教程.:-D
谢谢
我是andengine的新手,尝试使用git url中的这个andengine示例:https://github.com/nicolasgramlich/AndEngineExamples
但它始终显示我在两个类上的错误
BoundCameraExample和HullAlgorithmExample
在绑定的相机示例错误在第220行说:
类型不匹配:无法从void转换为AnimatedSprite
final AnimatedSprite face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion, this.getVertexBufferObjectManager()).animate(100);
Run Code Online (Sandbox Code Playgroud)
并且在HullAlgorithmExample错误是在
第11行的DrawMode错误的导入语句中:import org.andengine.entity.primitive.vbo.DrawMode;
并且在第168,175行中说DrawMode无法解析为变量
我正在使用java编译器1.6为我从同一个git repo下载andengine和扩展的所有扩展.这有什么问题请帮助我
感谢allll
我正在开发(学习构建:))与andengine GLES2的游戏.我正在使用Base游戏活动,并且我会覆盖setContent视图以放置我的admob广告.
除了解决方案政策外,每件事情都可以.
比率解析策略是我使用的CAMERA_WIDTH = 800; 和CAMERA_HEIGHT = 480;
问题是,只要覆盖invoiceContentView 场景没有对齐到中心,边距只显示在底部而不是顶部和底部,同样会导致水平对齐时边距将仅显示在右侧,而不是两侧.我怎么能纠正这个.我在下面给出我的代码
@Override
protected void onSetContentView() {
System.out.println("Content setting");
this.mRenderSurfaceView = new RenderSurfaceView(this);
final LayoutParams layoutParams = new LayoutParams(
android.view.ViewGroup.LayoutParams.MATCH_PARENT,
android.view.ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.gravity = Gravity.LEFT ;
final android.widget.FrameLayout.LayoutParams surfaceViewLayoutParams = new FrameLayout.LayoutParams(
layoutParams);
adView = new AdView(this, AdSize.BANNER, "xxxxxxxxxxxxx");
final FrameLayout.LayoutParams adViewLayoutParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.WRAP_CONTENT,
FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.LEFT
);
final FrameLayout frameLayout = new FrameLayout(this);
final FrameLayout.LayoutParams frameLayoutLayoutParams = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.FILL_PARENT,
FrameLayout.LayoutParams.FILL_PARENT,Gravity.CENTER);
frameLayout.addView(this.mRenderSurfaceView, surfaceViewLayoutParams); …
Run Code Online (Sandbox Code Playgroud) 我已经用AndEngine进行了几个月的测试,但仍未制作任何游戏原型.我想切换到libgdx的原因很少:
我关心libgdx的几件事情是我需要编写更低级别的代码,完整游戏的开发需要更长的时间吗?但话说回来,有时我失去了几天才能理解AndEngine的某些部分是如何工作的,所以我甚至可以用libgdx更快地编写代码,因为它已经完全记录了下来?
在切换之前我应该了解libgdx的哪些方面?编码游戏和设计代码有什么主要区别?
我想在我的android工作室项目中使用andengine,但我在构建时遇到了ndk错误.
Error:Execution failed for task ':andEngine:compileReleaseNdk'.
> com.android.ide.common.internal.LoggedErrorException: Failed to run command:
D:\Android\android-ndk-r9d\ndk-build.cmd NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\Android.mk APP_PLATFORM=android-19 NDK_OUT=D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\obj NDK_LIBS_OUT=D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\lib APP_ABI=all
Error Code:
2
Output:
D:/Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\obj/local/armeabi-v7a/objs/andengine_shared/D_\Android\workspace\simpleclock\simple_clock_as\andEngine\src\main\jni\src\GLES20Fix.o: in function Java_org_andengine_opengl_GLES20Fix_glVertexAttribPointer:GLES20Fix.c(.text.Java_org_andengine_opengl_GLES20Fix_glVertexAttribPointer+0x40): error: undefined reference to 'glVertexAttribPointer'
D:/Android/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\obj/local/armeabi-v7a/objs/andengine_shared/D_\Android\workspace\simpleclock\simple_clock_as\andEngine\src\main\jni\src\GLES20Fix.o: in function Java_org_andengine_opengl_GLES20Fix_glDrawElements:GLES20Fix.c(.text.Java_org_andengine_opengl_GLES20Fix_glDrawElements+0x30): error: undefined reference to 'glDrawElements'
collect2: ld returned 1 exit status
make.exe: *** [D:\Android\workspace\simpleclock\simple_clock_as\andEngine\build\intermediates\ndk\release\obj/local/armeabi-v7a/libandengine_shared.so] Error 1
Run Code Online (Sandbox Code Playgroud)
我想我错过了一些OpenGL文件?
andengine ×10
android ×9
java ×2
opengl-es ×2
android-ndk ×1
box2d ×1
game-engine ×1
libgdx ×1
shader ×1
vbo ×1