我有一些关于放在f文字值旁边的问题.我知道它将它定义为float但是我真的需要它吗?这是否2.0f * 2.0f更快或编译任何不同2.0 * 2.0?float a = 2.0;编译的方式是否与编译方式不同float a = 2.0f;?
我是mac新手,试图从macbook终端编辑.gitignore文件,我输入
vi .gitignore
Run Code Online (Sandbox Code Playgroud)
它打开文件,但不让我切换到编辑模式.如何在mac上切换模式?
并glTexParamter作用于所有纹理全局或仅是当前绑定的纹理.
例如,如果我在纹理加载时调用它:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
Run Code Online (Sandbox Code Playgroud)
这在另一个纹理加载:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
Run Code Online (Sandbox Code Playgroud)
当我绑定第一个纹理时它会使用我设置的最后一个值(GL_CLAMP)还是会使用绑定纹理时最初设置的值?
我找不到一种找到点和平面之间的有符号距离的一致方法.给定一个定义为点和法线的平面,我该如何计算?
struct Plane
{
Vec3 point;
Vec3 normal;
}
Run Code Online (Sandbox Code Playgroud) 我有以下代码,只需在屏幕上绘制一个绿色三角形.它使用顶点数组对象和索引缓冲区绘制,并具有我可以制作的最简单的着色器.
起初我没有使用索引缓冲区,只是简单地进行绘制调用,glDrawArrays但是当我将其更改为使用时glDrawElements,屏幕上没有任何内容(它完全是黑色).
from OpenGL.GL import shaders
from OpenGL.arrays import vbo
from OpenGL.GL import *
from OpenGL.raw.GL.ARB.vertex_array_object import glGenVertexArrays, \
glBindVertexArray
import pygame
import numpy as np
def run():
pygame.init()
screen = pygame.display.set_mode((800,600), pygame.OPENGL)
#Create the Vertex Array Object
vertexArrayObject = GLuint(0)
glGenVertexArrays(1, vertexArrayObject)
glBindVertexArray(vertexArrayObject)
#Create the VBO
vertices = np.array([[0,1,0],[-1,-1,0],[1,-1,0]], dtype='f')
vertexPositions = vbo.VBO(vertices)
#Create the index buffer object
indices = np.array([0,1,2], dtype='uint16')
indexPositions = vbo.VBO(indices, target=GL_ELEMENT_ARRAY_BUFFER)
indexPositions.bind()
vertexPositions.bind()
glEnableVertexAttribArray(0) # from 'location = 0' in …Run Code Online (Sandbox Code Playgroud) 实际问题
几个答案将解决我的问题:
CGImage从直接数据提供程序(创建时CGDataProviderCreateDirect)重新加载其数据CGContextDrawImage吗?或者是否有其他方法可以设置self.layer.contents来做到这一点?CGContext配置,或技巧,我可以使用至少30 fps渲染1024x768图像CGContextDrawImage.CVOpenGLESTextureCacheCreateTextureFromImage自己的纹理数据进行实时缓冲更新?我认为我最大的问题是创建一个,CVImageBuffer因为我从Apples的文档中复制了纹理的其他属性.如果有人有任何关于此的更多信息,那将是非常棒的.背景(手):
我正在开发一个项目,我需要实时修改NPOT图像数据的像素(至少30 fps)并在iOS屏幕上绘制.
我的第一个想法是使用OpenGL glTexSubimage2D进行更新,不幸的是,最终速度非常慢(在iPad上为6 fps),因为驱动程序在每帧都将我的RGB数据转换为BGR.因此,请将它发送到您说的BGR中,我也是如此,但出于某种原因,您无法glTexSubImage2D使用GL_BGRgo figure 调用.我知道一些缓慢是因为它不是2图像数据的力量,但我的要求决定了这一点.
更多阅读引导我,CVOpenGLESTextureCacheCreateTextureFromImage但所有的例子是使用直接相机输入来获得CVImageBufferRef我尝试使用文档(没有官方但只是标题注释)来使我自己的CVImageBuffer形成我的图像数据,但它不适用于此(不错误只是调试器中的空纹理),这让我觉得Apple专门为处理实时摄像机数据而构建它,并且除了IDK之外,它还没有在这个区域之外进行过多次测试.
无论如何在通过倾倒OpenGL并将我的想法转换为CoreGraphics放弃我的尊严后,我被引导到这个问题最快的方法在iphone上绘制屏幕缓冲区
,建议使用CGImage支持CGDataProviderCreateDirect,这允许您返回指向图像数据的指针CGImage需要它,真棒吗?好吧,它似乎没有像宣传的那样工作.如果我使用,CGContextDrawImage那么一切正常.我可以修改像素缓冲区,每次绘制时,它都应该从我的数据提供者那里请求图像数据,调用方法CGDataProviderDirectCallbacks(Note:它们似乎有内置优化,如果它具有与之相同的地址,则忽略更新的指针透水).CGContextDrawImage不是超快(大约18 fps),即使使用禁用插值也会超过6 fps.Apple的文档告诉我使用self.layer.contents将比快得多CGContextDrawImage.使用self.layer.contents第一次分配的工作,但从CGImage不请求从数据提供者重新加载,就像CGContextDrawImage我做的那样,即使我打电话[layer setNeedsDisplay].在我引用的SO问题中,用户通过每帧从数据源创建和销毁新的CGImage来展示他对问题的解决方案,这是一个绝对缓慢的过程(是的,我确实尝试过),所以是真正问题的时间.
注意:我已经分析了所有这些操作,并且知道问题确实是glTexSubImage针对OpenGL的,CGContextDrawImage并且确实是CoreGraphics的问题所以没有"go profile"的答案.
EDIT现在可以在http://github.com/narpas/image-sequence-streaming找到演示此技术的源代码.
我正在阅读有关创建图形"抽象层"的信息,以便在图形平台之间切换.不幸的是,我无法找到关于这个主题的更多细节.这种抽象是否可以在功能级别上实现,具有类似的功能?
void pushMatrix(){
if (directx){
// do directx function
}else if (opengl){
// do opengl function
}
}
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?有没有更好的办法?有人能指出一些做这个或更多示例代码的事情的例子吗?
我正在努力绘制自定义按钮/文本字段NSDrawNinePartImage.我在代码中将图像分割成九个部分并将其绘制成一个矩形NSDrawNinePartImage.
不幸的是,我在绘图模式上遇到了一些空白.我认为它与我的切片代码有关,但我将它们保存为我切片的图像,它们看起来都很好(我甚至将它们放在一起,它们看起来很好).尽管有些使用相同的图像,我使用它工作的一些情况也很好.
我非常有信心它归结为实际绘图.
您是否知道NSGraphicsContext会影响它的任何或其他设置或可能导致此问题的其他设置?
有差距

没有差距

Joomla 3.2的核心RSS源创建者是2.5吗?我想创建一个RSS源,其中包含我joomla类别中的一篇文章.
问题1
删除VAO后,在某个VAO下创建的顶点缓冲区对象是否已删除?
一个例子:
glGenBuffers(1, &bufferObject);
glGenVertexArrays(1, &VAO);
glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, bufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(someVertices), someVertices,
GL_STATIC_DRAW);
glEnableVertexAttribArray(positionAttrib);
glVertexAttribPointer(positionAttrib, 3, GL_FLOAT, GL_FALSE, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
以后打电话时glDeleteVertexArrays(1, &VAO);,会bufferObject被删除吗?
我问的原因是我在网上看到了一些没有删除那些缓冲区对象的例子.
问题2
我可以为缓冲区对象分配的最大内存量是多少?它当然必须是系统依赖的,但我似乎无法找到它的估计.当视频RAM不够大时会发生什么?我怎么会知道?