Articles of 四边形

分批旋转每个四元组?

背景 在我的应用程序中,我使用下面的代码来旋转我的四边形: 码 //Rotate the quad Matrix.setIdentityM(mRotationMatrix, 0); Matrix.translateM(mRotationMatrix, 0, centreX, centreY, 0f); Matrix.rotateM(mRotationMatrix, 0, -angle, 0, 0, 0.1f); Matrix.translateM(mRotationMatrix, 0, -centreX, -centreY, 0f); 然后应用matrix: // Combine the rotation matrix with the projection and camera view Matrix.multiplyMM(mvpMatrix2, 0, mvpMatrix, 0, mRotationMatrix, 0); // get handle to shape's transformation matrix mMVPMatrixHandle = GLES20.glGetUniformLocation(iProgId, "uMVPMatrix"); // Apply […]

为多个OpenGL四边形重新使用一个纹理

我一直在看我的代码,我只是想知道,当我设置一个纹理说20个四边形,需要使用相同的纹理,似乎我每次创建一个新的纹理…. ..当然这不是有效的? 我怎样才能确保使用相同纹理的20个四边形只能使用1个,而不是创建20个拷贝呢? 我只是无法解决如何做到这一点。 我知道我可以在应用纹理后更改texID,以便使用相同纹理的所有纹理都具有相同的纹理ID,但这不是我正面临的问题。 当然,我可能完全误解了OpenGL如何处理纹理,我的代码可能是正确的: – / 码: public void setTexture(GLSurfaceView view, Bitmap imgTexture){ this.imgTexture=imgTexture; //Create program from Utils class iProgId = Utils.LoadProgram(strVShader, strFShader); //Return location of u_basemap iBaseMap = GLES20.glGetUniformLocation(iProgId, "u_baseMap"); //Return location of attribute variables iPosition = GLES20.glGetAttribLocation(iProgId, "a_position"); iTexCoords = GLES20.glGetAttribLocation(iProgId, "a_texCoords"); //Return usable texture ID from Utils class texID = […]

如何强迫翻译经历一个确切点?

我有一个脚本的相机对象,无论是用设定的速度翻译它,还是停止它。 我还有7个“检查站”,有7个不同的四边形,每当摄像机到达他们时,都会停下来。 这里的问题是在我的代码中: void Update() { if (scoreholder.CheckScore()<scoretimer) { //if the current score is less than set X score if (killcam.transform.position.y == quadholder.y) { //and if the camera's position equals the position of the generic quad *PROBLEM HERE* killcam.GetComponent<cameraUp> ().SetCam (true); //stop the cam while (scoreholder.CheckScore () < scoretimer) { // do stuff offset = […]

与四方制作飞机

我是一个初级Unity 3D开发者。 我想保持四方相互接触,并把它作为一个无尽的亚军游戏的道路。 问题是每个四方都有自己的箱子对撞机,因此有时汽车反弹一点点。 有没有办法让这些东西互相连接,使整个事物像一架飞机? 我知道使用覆盖重复单元中所有四边形的大箱子对撞机是可行的,但我不想使用它。

网格应该由三角形还是四边形组成?

目前我有点困惑。 我正在写关于程序网格和纹理生成的硕士论文,为此,我正在编写一个Blender附加组件来生成基于物理物理渲染纹理的低多行星。 这个博客( http://blog.digitaltutors.com/modeling-with-quads-or-triangles/ )表示,最好使用四边形而不是三角形和n-gons。 线框看起来更干净,细分更多的逻辑和边缘循环。 关于这个话题的另一个博客可以在这里findhttp://blog.digitaltutors.com/ngons-triangles-bad/ 但是我也读到了这个为什么游戏引擎将模型转换成三角形,而把它保留为四边形的多边形 ,最后说一切都转换成了三角形。 所以我会假设从一开始就使用三角形更好,所以引擎不需要将四边形转换成三角形。 而现在我不知道是否更好使用三角形或四边形。 我可以这样想: 使用四边形进行建模,因为它更容易操作四边形网格。 建模完成后,转换为三角形并导出网格。 但我认为这正在改变低聚艺术风格。 在游戏引擎中使用。 如果我读ngons三角形坏博客post,它说,可能会呈现与三角形的问题。 那么为什么引擎比网格转换成三角形? 我错过重要的东西吗? 任何建议或更多信息? 谢谢!

Matrix.CreateBillboard中心旋转问题

我遇到了Matrix.CreateBillboard和一个纹理四边形的问题,其中中心轴似乎不正确地定位到围绕中心点旋转的四边形对象: 使用: BasicEffect quadEffect; 绘制四边形: Left = Vector3.Cross(Normal, Up); Vector3 uppercenter = (Up * height / 2) + origin; LowerLeft = uppercenter + (Left * width / 2); LowerRight = uppercenter – (Left * width / 2); UpperLeft = LowerLeft – (Up * height); UpperRight = LowerRight – (Up * height); 如果高度和宽度是传入的浮点值(绘制一个正方形) 绘制方法: quadEffect.View = […]

绘制许多四边形XNA

我昨天也问了一个类似的问题,并获得了一些技术,但我有点困惑: 如果我有很多包含顶点和指标的四边形,这些顶点和指标被定位来形成一个更大的图片,那么使用世界matrix来定位这个更大的图片。 我如何画他们所有。 从我所收集到的信息中,我必须以一个良好的速度一次完成。 我曾经用自己的传球来画每一个四分卫。 现在,一个对象中的每个四元组都被一次绘制。 但如果我有很多的对象,它会放慢速度。 所以我的问题是如何去绘制大量的独立的顶点和指数,而不会丢失帧率。 我不需要有人握住我的手也许指向正确的方向。

LWJGL不会将纹理拉伸到四边形

我在LWJGL中遇到纹理问题。 纹理不被拉伸到四边形。 正如你所看到的,纹理没有按照四边形的大小来标记,用粉红色边框标记。 使用方形四方形纹理时,问题不存在。 将纹理缩放到960×320像素无助于纹理大小为96px宽度和32px高度(1个tile为32×32,此对象为3 x 1) 代码: //rendering the textured quad. This method also renders everything else public static void renderTile(Texture tex, int x, int y, int sizex, int sizey) { tex.bind(); glBegin(GL_QUADS); glColor4f(1, 1, 1, 1); glTexCoord2f(0, 0); glVertex2f(x, y); glTexCoord2f(1, 0); glVertex2f(x + sizex, y); glTexCoord2f(1, 1); glVertex2f(x + sizex, y + […]

从大四方形成较小的四边形?

我有一个大四方(100×100),我想知道如何从这个大四方形成更小的四边形? 这样我将有多个小四边形,我可以为每个四边形添加不同的纹理。 谢谢!

在OpenGL(2D精灵表)中渲染纹理的特定部分

我已经看了这个答案找出如何渲染只是一个纹理的一部分: https : //stackoverflow.com/questions/6884285/c-opengl-render-part-of-an-image我试过,但问题是,这是我如何渲染我的纹理: glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2f(x, y); glTexCoord2f(1, 0); glVertex2f(x + w, y); glTexCoord2f(1, 1); glVertex2f(x + w, y + h); glTexCoord2f(0, 1); glVertex2f(x, y + h); glEnd(); 我试图这样做来渲染左上角的季度: glBegin(GL_QUADS); glTexCoord2f(0, 0); glVertex2f(x, y); glTexCoord2f(0.5, 0); glVertex2f(x + w, y); glTexCoord2f(0.5, 0.5); glVertex2f(x + w, y + h); glTexCoord2f(0, 0.5); glVertex2f(x, y + […]