基本上,在程序终止之前将存在的表面上,我是否需要SDL_FreeSurface()为每个表面运行,或者会SDL_Quit()为我处理所有这些事情?
SDL_FreeSurface()我问这个问题主要是因为指向我的许多表面的指针是类成员,因此如果我想在它们各自的表面上运行,我需要跟踪每个类实例(在全局数组或其他东西中) 。如果 SDL_Quit() 能为我一下子完成这一切,我宁愿这样做:D
我试图在 D3DSURFACE9 中设置各个像素,但它们到处都是。我想我以前也这样做过,但这次似乎做不好。
3DLOCKED_RECT lrt;
if(D3D_OK == lpThis->sfRenderingCanvas->LockRect(&lrt,NULL,0))
{
UINT pitch = lrt.Pitch;
VOID *data;
data = lrt.pBits;
UINT Y = (UINT)xmsg.Y;
UINT X = (UINT)xmsg.X;
for(int z=0;xmsg.iNum;z++)
{
if( xmsg.iDataBlock[z]>0 )
((DWORD*)data)[X+Y*pitch+z] = 0xFFFFFF00;
else
((DWORD*)data)[X+Y*pitch+z] = 0xFF000000;
}
}
}
Run Code Online (Sandbox Code Playgroud)
Y 介于 0 和创建曲面时使用的高度之间
X 介于 0 和曲面的节距之间
有人能告诉我我做错了什么吗?而且,它的高度似乎是我的窗户的两倍。(^如果我尝试绘制超过 1/4 的行,它会覆盖其中的 1/2。)
我正在尝试使用 matplotlib 制作一个简单的 3D 曲面图,但该图最终没有显示;我只得到空的 3D 轴。
这是我所做的:
from mpl_toolkits.mplot3d import Axes3D
x = np.arange(1, 100, 1)
y = np.arange(1, 100, 1)
z = np.arange(1, 100, 1)
fig = figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=5, cstride=5)
show()
Run Code Online (Sandbox Code Playgroud)
...我明白了:
有什么建议么?
我一直在寻找答案,但是我似乎看不出为什么在我的代码中我无法使投影轮廓显示在表面“背后”。
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.array([[200,800,1500,2000,3000],[200,700,1500,2000,3000],[200,800,1500,2000,3000],[200,800,1500,2000,3000]])
Y = np.array([[50,50,50,50,50],[350,350,350,350,350],[500,500,500,500,500],[1000,1000,1000,1000,1000]])
Z = np.array([[0,0,33,64,71],[44,62,69,74,76],[59,67,72,75,77],[63,68,73,76,77]])
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5)
cset = ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='x', offset=200, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='y', offset=1000, cmap=cm.coolwarm)
ax.set_xlabel('X')
ax.set_xlim(200, 3000)
ax.set_ylabel('Y')
ax.set_ylim(0, 1000)
ax.set_zlabel('Z')
ax.set_zlim(0, 100)
plt.show()
Run Code Online (Sandbox Code Playgroud)
我一直使用此页面中的“填充轮廓图”之一作为模板:http : //matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#scatter-plots …
我正在尝试使用 mediaCodec 从 openGl ES 表面创建 mp4 视频。我有一个eglSurface,该eglSurface 的源表面是MediaCodec 输入表面。
我可以为eglSurface 设置不同的尺寸,当一种尺寸(宽度或高度)太大时:例如宽度= 5000 且高度= 512,MediaCodec 崩溃。
这是崩溃日志
android.media.MediaCodec$CodecException: Error 0xfffffc0e
at android.media.MediaCodec.native_configure(Native Method)
at android.media.MediaCodec.configure(MediaCodec.java:588)
Run Code Online (Sandbox Code Playgroud)
....
在某些设备(Galaxy s7 edge)上它不会崩溃,但生成 videoView 后不会播放视频。
对于小尺寸(例如屏幕尺寸),它可以在所有设备上正常工作
我正在MATLAB中绘制一个R ^ 2到R函数作为曲面图,我从上面进行颜色映射和查看.
surf(X, Y, data);
colormap(jet);
colobar;
view(2);
Run Code Online (Sandbox Code Playgroud)
它产生(带有一些额外的代码)类似的东西
虽然函数的真实性质(为了理解这个问题)可以从以下角度更好地观察:
我想在我的原始情节(从上面看)上绘制一个圆圈.就像是...
然而,我似乎无法实现这一点,因为在绘图上绘制平面内元素使它们出现在xy轴上,我的表面图覆盖了它.例如,打电话
circle_pos = [ +1 +1; -1 -1; -1 +1; +1 -1;]
circle_rad = 0.2 * ones(4,1);
viscircles(circle_pos, circle_rad);
Run Code Online (Sandbox Code Playgroud)
从我的表面绘图后,从顶部查看时没有可见的圆圈.缩放和旋转显示这些圆圈在xy平面上绘制,因此从上方看不见.
如何将我的圆圈绘制在曲面图的顶部,以便从上方可以看到它们?当text在表面上绘图时会出现类似的问题,但是通过在基础函数z值之上指定az位置值来补救.似乎没有任何方法可以指定这些图形元素的z位置.
我正在尝试计算平滑连接管的双三次贝塞尔曲面的控制点。此示例为相应的贝塞尔曲线图块提供了 16 个控制点(采用 OpenSCAD 的语法):
[[[ 2 , 2 , 0], [2.5, 1.5, 0], [3.5, 1 , 0], [4, 1 , 0]],
[[ 2 , 2 , 1], [2.5, 1.5, 1], [3.5, 1 , 1], [4, 1 , 1]],
[[1.3, 1.3, 2], [1.8, 0 , 2], [ 3 , 0.5, 2], [4, 0.5, 2]],
[[ 0 , 0 , 2], [1.8, 0 , 2], [ 3 , 0 , 2], [4, 0 , 2]]]
Run Code Online (Sandbox Code Playgroud)
给出了角点;沿边缘的控制点(以红色显示)是根据具有明显方向的切线计算的:
该补片可以在平面 z=0、y=0、x=4 和 x=y 上进行镜像,以生成更大的复合曲面,该曲面沿所有四个接缝 …
我正在使用 mpl_toolkits 库中的 mplot3d。当在图形上显示 3D 表面时,我意识到轴没有按照我希望的方式定位。
让我展示一下,我已将每个轴的位置添加到以下屏幕截图中:
有没有办法改变轴的位置以获得这个结果:
这是工作代码:
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
ax = Axes3D(plt.figure())
def f(x,y) :
return -x**2 - y**2
X = np.arange(-1, 1, 0.02)
Y = np.arange(-1, 1, 0.02)
X, Y = np.meshgrid(X, Y)
Z = f(X, Y)
ax.plot_surface(X, Y, Z, alpha=0.5)
# Hide axes ticks
ax.set_xticks([-1,1])
ax.set_yticks([-1,1])
ax.set_zticks([-2,0])
ax.set_yticklabels([-1,1],rotation=-15, va='center', ha='right')
plt.show()
Run Code Online (Sandbox Code Playgroud)
我尝试过使用xaxis.set_ticks_position('left')声明,但它不起作用。
我正在尝试记录我无权访问的摄像机流。我只能访问自定义 SurfaceView,它从相机预览中获取图像并渲染图像。
我想将表面\相机视频保存到文件中。我正在使用 SDK 进行流式传输 (Amazon Chime),但我无权访问相机组件来添加用于录制的持久表面。
虽然我确实可以访问每个新图像“VideoRenderer.I420Frame”,但不确定如何将其积累到视频中。
我想到的另一种方法是使用“MediaRecorder”中的表面,但是当我使用这个表面(此视图)时,我得到了这个异常:
java.lang.IllegalArgumentException:不是 PercientSurface
我可以以某种方式创建一个 PersistentSurface 并将当前表面复制到新表面中,同时获取新图像吗?或者以其他方式解决这个问题?
这个类目前看起来像这样:
class RecordingVideoRenderView : SurfaceViewRenderer, VideoRenderView {
private var recording: Boolean = false
private val logger = ConsoleLogger(LogLevel.DEBUG)
private val TAG = "RecordingVideoRenderView"
private lateinit var recorder: MediaRecorder
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
override fun renderFrame(frame: Any) {
this.renderFrame(frame as VideoRenderer.I420Frame)
}
override fun initialize(initParams: Any?) {
this.init((initParams as EglBase).eglBaseContext, null)
}
override fun finalize() {
this.release()
}
fun startRecording() …Run Code Online (Sandbox Code Playgroud)